контекст
Я использую Ubuntu Desktop в качестве основного компьютера, который я назову D. Я хочу подключиться к серверу S через ssh, но брандмауэр блокирует меня.
У меня есть доступ к серверу S по очень громоздкому пути с использованием виртуальной машины Windows и PuTTY . Это делает работу с этим сервером чрезвычайно раздражающей: совершенно другая среда, копирование / вставка не работает, я не могу правильно использовать свой рабочий стол, когда он подключен к нему (Alt-Tab нарушается виртуальной машиной) и т. Д.
Я проверил, что я могу ssh с сервера S на мой настольный компьютер D (в противоположность тому, что мне нужно).
Могу ли я каким-либо образом инициировать «переадресацию портов» или подобное с сервера, чтобы я мог ssh на сервер с моего рабочего стола?
источник
D->S
, злоупотребляяS->D
Ответы:
Вы можете использовать следующую команду для настройки SSH-туннеля от удаленного сервера до локального компьютера:
Когда туннель настроен, вы можете просто подключиться к удаленному серверу с помощью следующей команды:
Обратите внимание, что вам нужно настроить ssh-ключи для автоматического входа (без запроса пароля). Если вы хотите создать SSH-туннель в интерактивном режиме, вы можете удалить опции
-f -N
. Для получения дополнительной информацииman ssh
.источник
Если вы работаете с более новой версией OpenSSH (7.3+), вы можете использовать тот,
ProxyJump
который объединяет все магическим образом:Который по вашему
~/.ssh/config
выглядит:ProxyJump
поддерживает полный синтаксис SSH, так что если выjim
наwindows_server
и использует порт2222
для SSH.remote_server
на IP192.168.0.110
с того, чтоwindows_server
вы можете написать:И все же просто беги,
ssh remote_server
чтобы добраться туда.Если вы используете более старую версию SSH, используйте ProxyCommand - это позволяет вам указать SSH сначала выполнить команду для установки прокси-соединения, прежде чем выполнять настоящую команду SSH.
При этом используется опция SSH -W , которая является сокращением для более загадочного синтаксиса netcat .
Обратите внимание, что, поскольку при запуске
ssh remote_server
вы работаете,windows_machine
вам нужно убедиться, что вы используете IP-адресremove_server
из поля перехода, а не IP-адрес вашего компьютера - они вполне могут быть одинаковыми.Затем вы можете добавить эту директиву в ваш
~/.ssh/config
файл:Это означает , что если
remote_server
есть другая машина , как видно из ,windows_machine
то вы можете положить , что в конфигурации и до сих пор просто использоватьssh remote_server
.источник
Вместо того, чтобы пытаться обойти вещи и создать запутанный путь, разве вы не можете просто попросить SSH с вашего рабочего стола на сервер, который будет разрешен? Если вам это нужно и вам нужен доступ к серверу, я не понимаю, почему вы отклонили запрос.
источник