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

9
ответ дан 2 December 2019 в 22:05

Если Вы готовы обновить конфигурацию на своем клиенте, можно установить клиент для использования поля шлюза в качестве прокси. Вашей коробке реле будет нужен 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
3
ответ дан 2 December 2019 в 22:05
  • 1
    Извините, но это не использует OpenSSH, Вы используете netcat, чтобы сделать реле между клиент-сервером и сервером? –  aHunter 8 October 2009 в 02:38
  • 2
    Это использует OpenSSH, объединенный с очень общей утилитой, которая доступна почти везде. Это не чистый ssh, но я wouldn' t называют означавшим. –  Zoredache 8 October 2009 в 02:49
  • 3
    Нет я соглашаюсь, что это не сделано на заказ, но я хотел знать, возможно ли это к использованию реле OpenSSH так, чтобы Вы использовали стандарт ssh клиент и ssh к выполнению поля OpenSSH, который затем автоматически затем обеспечивает ssh доступ к другой машине или нескольким машинам.Спасибо –  aHunter 8 October 2009 в 02:57
  • 4
    +1 работа для меня –  xkcd150 30 March 2010 в 01:09
  • 5
    @aHunter, для записи существует теперь ' netcat mode' встроенный в openssh 5.4, который делает предложениям чистое openssh соединение - blog.rootshell.be/2010/03/08/openssh-new-feature-netcat-mode, никакие внешние инструменты не необходимы. –  Zoredache 30 March 2010 в 03:03

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

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

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

1
ответ дан 2 December 2019 в 22:05

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

ssh -t relay.example.com ssh internal.example.com
3
ответ дан 2 December 2019 в 22:05

Теги

Похожие вопросы