Как подключиться по ssh к серверу, используя другой сервер?

Как подключиться по ssh к серверу, используя другой сервер?

Возможный дубликат:
ssh через несколько хостов

Для подключения ксервер БМне сначала нужно подключиться по sshсервер А. Какая командная строка для доступасервер Б?

решение1

Если сервер B доступен через sshи вам нужен только ssh(не напрямую scpили sftp), это тоже работает очень хорошо:

ssh -t $SERVER_A ssh $SERVER_B

Опция -tпринудительно выделяет псевдотерминал даже при запуске одной команды на другом конце. Это полезно, так как sshтребует псевдотерминала.

Поскольку вы используете два вложенных экземпляра ssh, то экранирующий символ во внутреннем сеансе — Enter ~ ~(две тильды). Одна тильда отправит экранирующий символ в первую оболочку.

решение2

Встроенного способа sshсделать это нет, кроме как использовать переадресацию портов.

Однако есть способ, который работает достаточно хорошо - ProxyCommandнастройка для ssh. Вы можете указать это на уровне хоста ~/.ssh/configи использовать его для указания команды, которую нужно запустить для подключения к удаленному порту ssh.

Я использую это на нескольких хостах:

host serverB.example.com serverB
  ProxyCommand /usr/bin/ssh serverA.example.com /usr/bin/nc %h %p

ssh(1)Подробности смотрите на странице руководства, а команду, которую я использую для переадресации соединения, — nc(1)в пакете. (Хотя вы можете использовать что угодно, что создает TCP-соединение и передает через него стандартный ввод и вывод.)netcat

Связанный контент