Можно ли использовать 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 внутренний-SSH-хост-прокси с вашего клиентского компьютера.
Если на прокси-узле SSH установлен клиент OpenSSH версии 5.4 или выше, вам не нужен netcat, и вместо этого вы можете использовать встроенный режим netcat.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22
Из представленных ответов наилучшим общим решением является Зордаче. Однако для потомков, если вы просто хотите подключиться к сети ad-hoc без редактирования конфигурации, используйте -t
флаг для выделения псевдотерминала вместе с выполнением ssh непосредственно на реле.
ssh -t relay.example.com ssh internal.example.com
Вы можете автоматически перенаправлять соединения с помощью OpenSSH. В твоем ~/.ssh/authorized_keys
файла, вы можете указать команду для выполнения, которая может быть SSH для второго компьютера.
[ssh client] ----> [ssh relay server] ----> [ssh target server]
you modified authorized_keys target machine
В конечном итоге вы увидите два запроса на Password:
: один для сервера ретрансляции и один для целевого сервера. Вы всегда можете удалить это поведение с помощью сертификатов.