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

10

Можно ли использовать OpenSSH для ретрансляции на другие устройства с поддержкой SSH, такие как коммутаторы маршрутизаторов и т. Д. Если это можно сделать без создания специального приложения для Linux, чтобы сделать это?

Спасибо

aHunter
источник

Ответы:

9

Конечно; просто используйте переадресацию / туннелирование портов 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-порт.

Брэд Бейенхоф
источник
3

Если вы хотите обновить конфигурацию на своем клиенте, вы можете настроить свой клиент на использование вашего шлюза в качестве прокси . В вашем устройстве ретрансляции потребуется установить 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
Zoredache
источник
Извините, но это не использует OpenSSH вы используете Netcat для ретрансляции между клиентским сервером и сервером?
aHunter
Он использует OpenSSH в сочетании с очень распространенной утилитой, которая доступна почти везде. Это не чистый ssh, но я бы не назвал это сделанным по заказу.
Зоредаче
Нет, я согласен, что это не сделанный на заказ, но я хотел знать, возможно ли ретранслировать с использованием OpenSSH, чтобы вы использовали стандартный ssh-клиент и ssh на ящик с запущенным OpenSSH, который затем автоматически предоставляет ssh-доступ к другому компьютеру или нескольким компьютерам. Спасибо
aHunter
1
@aHunter, для протокола, теперь в openssh 5.4 встроен «режим netcat», который обеспечивает чистое соединение openssh - blog.rootshell.be/2010/03/08/openssh-new-feature-netcat-mode без внешних инструментов необходимы.
Zoredache
3

Из представленных ответов Zordache's - лучшее общее решение. Однако для потомков, если вы просто хотите подключить ad-hoc без редактирования вашей конфигурации, используйте -tфлаг, чтобы выделить псевдотерминал вместе с выполнением ssh непосредственно на реле.

ssh -t relay.example.com ssh internal.example.com
bahamat
источник
простейшее решение без редактирования файлов
Kartoch
2

Вы можете пересылать соединения автоматически, используя OpenSSH. В вашем ~/.ssh/authorized_keysфайле вы можете указать команду для выполнения, которая может быть SSH для второй машины.

[ssh client] ----> [ssh relay server] ----> [ssh target server]
    you          modified authorized_keys      target machine

В конечном итоге вы увидите два запроса Password:: одно для сервера ретрансляции и одно для целевого сервера. Вы всегда можете удалить это поведение с помощью сертификатов.

sybreon
источник
это звучит идеально, как бы вы настроить sshd в openssh?
aHunter
Обратитесь к разделу [Принудительные команды] [1] на [1] eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html
sybreon
это удивительная идея Последнее, что я хочу сделать, это открыть 100 отдельных портов в моем брандмауэре с помощью маршрутов. Затем повторите для резервирования. Это говорит о том, что я могу создать 100 ключей SSH и связать каждый из них с собственным сервером. Это также говорит о том, что я могу полностью заблокировать сервер ретрансляции. Некоторые могут назвать это VPN, но я вижу это по-другому.
Ричард