Я могу получить доступ к серверу A по SSH, и оттуда я могу получить доступ к серверу B , но не могу получить доступ к B напрямую. ]
Можно ли открыть папку Nautilus на сервере B , нажав Places
→ Connect to Server
?
Да, это возможно. У меня есть следующая настройка, которая работает, но могут быть и более легкие.
В файле ~/.ssh/config
добавьте следующие строки:
ControlMaster auto
ControlPath /home/yourusername/.ssh/tmp/%h_%p_%r
Host A
HostName hostname.of.server.a
Host B
ProxyCommand ssh -e none A netcat -w 5 hostname.of.server.b 22
Вы должны заменить имя пользователя, имя хоста.of.sever.a и имя хоста.of.server.b После этого Вы можете (в Nautilus) перейти в Places-> Connect to Server (на самом деле это File-> Connect to Server на моем компьютере). А затем введите B
. Это должно быть все, чтобы увидеть сервер B.
Обновление предыдущих ответов: использование netcat для пересылки соединения на промежуточный хост работает иначе, чем ssh'ing напрямую, и завершится неудачно, когда вы захотите, например подключиться к серверу VNC, который настроен на прием только локальных подключений через туннель Jumphost. Чтобы соединение работало точно так же, как прямое, используйте опцию -W, присутствующую в более новых версиях клиента:
Host jumphost
Hostname hostname.of.jumphost
Host target
Hostname hostname.of.target
Port 30022
ProxyCommand ssh -W %h:%p jumphost
Одна вещь, которую нужно попробовать, это добавить это в .ssh / config:
Host B
ProxyCommand ssh A nc -q0 %h %p
ForwardAgent yes
Как только это будет сделано, вы сможете напрямую ssh B
, и SSH будет знать, что он «отказов» соединение через А. сначала.
Когда это работает, попробуйте Наутилус, как вы описываете, и посмотрите, работает ли для него настройка прокси.