Конечно; просто используйте перенаправление портов SSH / туннелирование. Запустите соединение SSH к машине "прокси" с помощью следующей команды:
ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
$PROXYHOST
: машина у Вас есть доступ SSH к$REMOTEHOST
: машина, с которой может соединиться $PROXYHOST, но Вы не можете. Используйте имя хоста или IP это $PROXYHOST
может использовать для обращения к машине$SSHPORT
: порт, к которому sshd прислушивается на remotehost; скорее всего, 22$LOCALPORT
: локальный исходящий порт SSH открывается на Вашей локальной машине что вперед портировать 22 на $REMOTEHOST
Оставьте на виду то соединение для хранения туннельной работы. Вы могли бы хотеть также добавить -N
к команде так, чтобы это соединение не поднимало удаленную оболочку и Вы случайно не закроете его позже.
После того как туннель устанавливается, сделайте следующее:
ssh -p $LOCALPORT localhost
Это делает попытку соединения SSH к Вашей локальной машине на порте, который это передается $REMOTEHOST
порт SSH.
Если Вы готовы обновить конфигурацию на своем клиенте, можно установить клиент для использования поля шлюза в качестве прокси. Вашей коробке реле будет нужен netcat, установленный, и для лучших результатов Вы захотите иметь основанную на ключе установку аутентификации.
Вот то, что я использую в своем .ssh/config для соединения через другой хост.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host "/bin/netcat -w 1 internal-ssh-host 22"
С вышеупомянутым можно просто выполнить команду ssh internal-ssh-host-proxy от клиентской машины.
Если хост SSH прокси, имеет клиент OpenSSH 5.4, или выше Вас не нуждаются в netcat, и вместо этого можно использовать созданный в netcat режиме.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22
Можно передать соединения автоматически с помощью OpenSSH. В Вашем ~/.ssh/authorized_keys
файл, можно указать команду для выполнения, который мог быть SSH к второй машине.
[ssh client] ----> [ssh relay server] ----> [ssh target server]
you modified authorized_keys target machine
То, что Вы закончите тем, что видели, является двумя подсказками для Password:
: один для сервера ретрансляции и один для целевого сервера. Можно всегда удалять это поведение при помощи сертификатов.
Из представленных ответов Зордаче является лучшее общее решение. Однако для потомков, если вы просто хотите подключиться к сети без редактирования конфигурации, используйте флаг -t
для выделения псевдотерминала вместе с выполнением ssh непосредственно на реле.
ssh -t relay.example.com ssh internal.example.com