SSH через промежуточный хост с использованием управляющего сокета

SSH через промежуточный хост с использованием управляющего сокета

Я хочу подключиться по SSH к машине C с машины A через машину B. Обычно я делаю следующее:

A$ ssh user@B
B$ ssh user@C

Мне нужно вводить пароли оба раза (открытый ключ не допускается). Я хотел бы настроить управляющий сокет, чтобы после ввода обоих паролей я мог подключиться по ssh к C, используя сокет, возможно, введя что-то вроде:

A$ ssh -S socket C

Это возможно?

решение1

Вы можете использовать B в качестве хоста перехода:

ssh -J user@B user@C

Если ваши имена пользователей или хостов длинные, вы можете добавить их в ~/.ssh/config:

Host hostB
    HostName some-long-hostname-of-B-or-its-ip
    User username-on-B

Host hostC
    HostName same-here-for-C
    User username-on-C

Затем вы можете подключиться по ssh следующим образом:

ssh -J hostB hostC

Прыжок также можно настроить для ssh hostC:

Host hostC
    HostName same-here-for-C
    User username-on-C
    ProxyJump hostB

решение2

В дополнение к ответу gronostaj, вот как создать сокет с -J:

$ ssh -M -S socket -J user@B user@C -fN

Затем, чтобы использовать сокет для входа в C:

$ ssh -S socket C

Таким образом, вам не придется вводить никаких паролей.

Связанный контент