Возможный дубликат:
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