Можно ли использовать OpenSSH для ретрансляции на другие устройства с поддержкой SSH, такие как коммутаторы маршрутизаторов и т. Д. Если это можно сделать без создания специального приложения для Linux, чтобы сделать это?
Спасибо
Конечно; просто используйте переадресацию / туннелирование портов SSH. Запустите соединение ssh с прокси-машиной, используя следующую команду:
ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
$PROXYHOST
: машина, к которой у вас есть доступ по SSH$REMOTEHOST
: машина, к которой может подключиться $ PROXYHOST, но вы не можете. Используйте имя хоста или IP-адрес, который $PROXYHOST
можно использовать для ссылки на компьютер$SSHPORT
: порт, который sshd ожидает на удаленном хосте; скорее всего 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
Из представленных ответов Zordache's - лучшее общее решение. Однако для потомков, если вы просто хотите подключить ad-hoc без редактирования вашей конфигурации, используйте
-t
флаг, чтобы выделить псевдотерминал вместе с выполнением ssh непосредственно на реле.источник
Вы можете пересылать соединения автоматически, используя OpenSSH. В вашем
~/.ssh/authorized_keys
файле вы можете указать команду для выполнения, которая может быть SSH для второй машины.В конечном итоге вы увидите два запроса
Password:
: одно для сервера ретрансляции и одно для целевого сервера. Вы всегда можете удалить это поведение с помощью сертификатов.источник