Я пытаюсь создать туннель SSH для доступа к удаленному серверу (A), доступ к которому возможен только через другой сервер (B). У меня есть ключ на моей локальной машине (L), чтобы добраться до сервера ретрансляции (B), и другой ключ на сервере ретрансляции (B), чтобы добраться до сервера назначения (A).
[локальный компьютер (L) с ключом к серверу ретрансляции (B)] -> [сервер ретрансляции (B) с ключом к серверу назначения (A)] -> [сервер назначения (A)]
У меня есть файл ~/.ssh/config, который выглядит так на моей локальной машине (L):
Host relay.server(B)
Hostname relay.server
Port 22
User me
IdentityFile ~/.ssh/id_rsa
Host destination.server(A)
Hostname destination.server
Port 1122
User me
IdentityFile ~/.ssh/id_rsa
И я могу легко заставить мой туннель работать со следующим:
запустив команду: ssh -N -L 1122:SERVER_PRIVATE_IP:22 relay.server(B)
на моей локальной машине (L). Это побуждает меня ввести пароль для разблокировки первого ключа, а затем кажется, что оно зависает, оно не возвращает приглашение, используя параметр -f
или заканчивая символом &
позволяет мне ввести пароль. Однако, если я ^C
эту команду после ввода пароля и затем введу ssh destination.server(A)
я получу запрос на ввод пароля для разблокировки второго ключа после того, как я подключусь к серверу назначения (A).
Я ищу одну команду, которая позволит мне подключиться к целевому серверу (A) с моего локального компьютера (L) и предложит указать пароли, необходимые для разблокировки каждого ключа. Или предложение альтернативного способа организации вещей, чтобы я мог подключиться напрямую к конечному серверу (A) с моей локальной машины (L) через сервер ретрансляции (B).