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

SSH через 3-ю машину

Local Computer (Fedora)  --SSH-->  Server1  --SSH-->  Server2

В некоторых средах, в которых я работаю, мы должны использовать «блоки перехода», где вы отправляете ssh на один сервер, чтобы перейти на другой сервер. Есть ли быстрый способ сделать это, например, отредактировав ~ / .ssh / config, чтобы всякий раз, когда я отправляю ssh на Server2 с моего локального компьютера, он автоматически создает необходимое соединение с Server1? Я могу настроить ключи, чтобы при необходимости мне не предлагалось ввести пароль для Server1.

Вы можете использовать такую ​​команду:

$ ssh -t user@server1 ssh user@server2

Эта команда отправит вас на server2 через server1. Вам будет предложено последовательно ввести два пароля для входа на server1, а затем на server2. Если вы настроите необходимые ключи SSH, вы должны автоматически войти на server2.

Это очень полезно, когда вы не можете напрямую войти на server2.

Этот тип функциональности был добавлен в OpenSSH версии 5.4, и его можно использовать, выполнив

ssh -W server2 server1

куда server2 ваше предполагаемое место назначения и server1 ваш прокси-сервер. Вы можете сделать это проще, используя ProxyCommand в вашей конфигурации ssh, например:

host = *.example.com
user = packs
port = 22
ProxyCommand ssh -W %h:%p server1

Я также видел это с помощью netcat, поэтому с теми же примерами, что и выше

ssh server1 nc -q0 server2 22

Точно так же это также можно использовать в вашей конфигурации ssh, за исключением замены ProxyCommand так как

ProxyCommand ssh server1 nc -q0 %h %p

Я использую перенаправленные порты:

# ~/.ssh/config

# The jumping-off point

Host server1
  Hostname blah.sample.com
  LocalForward 10002 server2:22
  LocalForward 10003 server3:22

# Servers behind the jumping-off point, reached by connecting
# to the forwarded ports above

Host server2
  HostKeyAlias server2
  Hostname localhost
  Port 10002

Host server3
  HostKeyAlias server3
  Hostname localhost
  Port 10003

У этого есть несколько преимуществ перед ssh -t user@server1 ssh user@server2:

  • Через один туннель можно установить несколько сеансов.
  • Вам нужно аутентифицировать каждое соединение только один раз, а не дважды.
  • Прозрачное использование ssh, scp и sftp (например, вы можете scp thisfile server2:~/thatfile без дополнительной гимнастики).
  • X и переадресация портов работают без необходимости думать об этом.