Я использую Ubuntu Desktop в качестве основного компьютера, который я назову D. Я хочу подключиться к серверу S через ssh, но брандмауэр блокирует меня.
У меня есть доступ к серверу S по очень громоздкому пути, включающему виртуальную машину Windows и PuTTY. Это делает работу с этим сервером чрезвычайно раздражающей: совершенно другая среда, копирование / вставка не работает, я не могу правильно использовать свой рабочий стол, когда к нему подключен (Alt-Tab сломан виртуальной машиной) и т. Д.
Я подтвердил, что могу использовать ssh с сервера S на моем настольном компьютере D (в противоположность тому, что мне нужно).
Могу ли я каким-то образом инициировать «переадресацию портов» или что-то подобное с сервера, чтобы я мог ssh на сервер со своего рабочего стола?
Вы можете использовать следующую команду для настройки SSH-туннеля от удаленного сервера к вашему локальному компьютеру:
$ ssh -f -N -R 1234:localhost:22 user@your_machine_ip
Когда туннель настроен, вы можете просто подключиться к удаленному серверу по ssh, используя следующую команду:
$ ssh -p 1234 user@localhost
Обратите внимание, что вам необходимо настроить ssh-ключи для автоматического входа в систему (без запроса пароля). Если вы хотите создать туннель SSH в интерактивном режиме, вы можете удалить параметры -f -N
. Для получения дополнительной информации, man ssh
.
Если вы используете более новую версию OpenSSH (7.3+), вы можете использовать ProxyJump
который волшебным образом соединяет все вместе:
ssh -J windows_machine remote_server
Который в вашем ~/.ssh/config
выглядит как:
Host remote_server
HostName remote_server
ProxyJump windows_machine
User myname
ProxyJump
поддерживает полный синтаксис SSH, поэтому, если вы jim
на windows_server
и он использует порт 2222
для ssh. remote_server
находится на IP 192.168.0.110
из windows_server
тогда вы можете написать:
Host remote_server
HostName 192.168.0.110
ProxyJump jim@windows_machine:2222
User myname
И по-прежнему просто беги ssh remote_server
попасть туда.
Если вы используете старую версию SSH, используйте ProxyCommand - это позволяет указать SSH сначала запустить команду для установления прокси-соединения, прежде чем запускать фактическую команду SSH.
ssh -o ProxyCommand='ssh -W %h:%p windows_machine' remote_server
Это использует SSH -W вариант, который является сокращением для более загадочного синтаксис netcat.
Обратите внимание: как и при запуске ssh remote_server
ты сейчас на windows_machine
вам необходимо убедиться, что вы используете IP-адрес remove_server
из прыжковой коробки а не IP-адрес вашего компьютера - они вполне могут быть одинаковыми.
Затем вы можете добавить эту директиву в свой ~/.ssh/config
файл:
Host remote_server
HostName remote_server
User myname
ProxyCommand ssh -W %h:%p windows_machine
Это означает, что если remote_server
является другая машина, как видно из windows_machine
тогда вы можете поместить это в конфигурацию и по-прежнему просто использовать ssh remote_server
.
Вместо того, чтобы пытаться обойти некоторые вещи и создать запутанный путь, разве вы не можете просто попросить разрешить SSH с рабочего стола на сервер? Если вам это нужно, и вы должны получить доступ к серверу, я не понимаю, почему вам было отказано в запросе.