Назад | Перейти на главную страницу

Сервер ретрансляции SSH с OpenSSH

Можно ли использовать 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-соединение с вашим локальным компьютером через порт, перенаправленный на $REMOTEHOSTSSH-порт.

Если вы хотите обновить конфигурацию на своем клиенте, вы можете настроить свой клиент на использование шлюза в качестве доверенное лицо. Для вашего блока ретрансляции необходимо установить 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:: один для сервера ретрансляции и один для целевого сервера. Вы всегда можете удалить это поведение с помощью сертификатов.