Включіть дистанційне переадресацію в SSH ProxyCommand


0

Отже, у мене є 3 сервери:

  • server_a: мій цільовий сервер
  • server_b: сервер стрибків
  • server_c: інший сервер

Ні server_a, ні server_b зазвичай взагалі не мають доступу до server_c. Однак я можу використовувати магію віддаленого переадресації, щоб забезпечити server_c певним портом на server_a. Наступна команда виконує це:

ssh -t -A -R 6880:server_c:22 server_b ssh -t -A -R 6880:localhost:6880 server_a

Я хочу перетворити цю об'ємну команду в еквівалентні налаштування ssh_config. Я можу отримати базове з'єднання ssh / scp, працюючи за допомогою команди проксі:

host server_b
  Hostname 192.X.X.X
  User john
  IdentityFile /path/to/identity_file
  ForwardAgent yes

Host server_a
  Hostname 172.X.X.X
  User john
  ProxyCommand ssh -W %h:%p server_b

Але перераховані вище конфігурації не виконують віддаленого переадресації, а server_a взагалі не має доступу до server_c. Я намагався додати рядки в RemoteForward, щоб досягти цього:

host server_b
  Hostname 192.X.X.X
  User john
  IdentityFile /path/to/identity_file
  ForwardAgent yes
  RemoteForward 6880 server_c:22

Host server_a
  Hostname 172.X.X.X
  User john
  ProxyCommand ssh -W %h:%p server_b
  RemoteForward 6880 localhost:6880

Якщо я ssh безпосередньо в server_b, здається, що віддалене переадресація на server_c нормально, але коли я ssh прямо в server_a зі свого ноутбука, доступ до server_c через віддалений вперед не здається, працює.

Будь-які пропозиції будуть вдячні

Відповіді:


0

ProxyCommand - це не те саме, що використовувати ssh server_b ssh server_a. Це дозволяє другому sshклієнту працювати локально і просто говорити протокол SSH через тунель.

Тож вам не потрібні параметри переадресації для хоста стрибка, лише для кінцевого з'єднання:

Host server_a
    ProxyCommand ssh -W %h:%p server_b
    RemoteForward 6880 server_c:6880

Host server_b
    # no RemoteForward
    # no ForwardAgent, either!

Крім того, якщо ви оновлюєте свій локальний клієнт OpenSSH до 7.3 або пізнішої версії, ви можете використовувати -Jпараметр (він же ProxyJump) як ярлик. Наприклад, це дорівнює вищевказаній конфігурації:

Host server_a
    ProxyJump server_b
    RemoteForward 6880 server_c:6880

Те саме в командному рядку:

$ ssh -R 6880:server_c:6880 -J server_b server_a
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.