Quero fazer SSH para uma máquina C da máquina A a B. Normalmente eu faria:
A$ ssh user@B
B$ ssh user@C
Tenho que digitar senhas nas duas vezes (nenhuma chave pública é permitida). Gostaria de configurar um soquete de controle para que depois de digitar as duas senhas eu possa fazer ssh para C usando o soquete, talvez digitando algo como:
A$ ssh -S socket C
Isso é possível?
Responder1
Você pode usar B como host de salto:
ssh -J user@B user@C
Se seus nomes de usuário ou nomes de host forem longos, você poderá adicioná-los a ~/.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
Então você pode ssh assim:
ssh -J hostB hostC
O salto também pode ser configurado para ssh hostC
:
Host hostC
HostName same-here-for-C
User username-on-C
ProxyJump hostB
Responder2
Para complementar a resposta do gronostaj, veja como você cria um soquete com -J:
$ ssh -M -S socket -J user@B user@C -fN
Então, para usar o soquete para fazer login em C:
$ ssh -S socket C
Dessa forma, você não é obrigado a digitar nenhuma senha.