Я хочу подключиться по 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
Таким образом, вам не придется вводить никаких паролей.