Thursday, March 21, 2013

SSH-соединения с использованием промежуточных хостов

Иногда возникает необходимость в использовании SSH-соединения с хостом, к которому прямого доступа нет. В таких случаях приходится соединяться сперва с промежуточным хостом, а с него уже с нужным. К счастью, этот процесс легко автоматизировать.

Предположим нам надо зайти на хост B (недоступный с текущего места) и мы можем зайти на хост A (с которого доступен хост B). В настройках ssh (e.g. ~/.ssh/config) указываем, что соединение с хостом B должно проксироваться через хост A, используя опцию -W:

Host B
HostName myhost
ProxyCommand ssh -q -W %h:%p A


После этого просто используем команду ssh B. Имя myhost должно резолвиться хостом A и указывать на хост B. По аналогии можно добавить произвольное число промежуточных хостов.

Надо заметить, что опция -W появилась в OpenSSH 5.4 (март 2010г). Для более ранних версий можно использовать netcat:

ProxyCommand ssh A nc %h %p


Данная простая настройка делает возможным установку соединения с хостом одной командой, а также открывает доступ к нему приложениям rsync, git, etc., использующим SSH в качестве транспорта.

No comments:

Post a Comment