SSH a través de host intermedio usando socket de control

SSH a través de host intermedio usando socket de control

Quiero SSH a una máquina C desde la máquina A a la B. Normalmente haría:

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

Tengo que escribir contraseñas ambas veces (no se permite clave pública). Me gustaría configurar un socket de control para que después de escribir ambas contraseñas pueda enviar ssh a C usando el socket, tal vez escribiendo algo como:

A$ ssh -S socket C

es posible?

Respuesta1

Puedes usar B como host de salto:

ssh -J user@B user@C

Si sus nombres de usuario o nombres de host son largos, puede agregarlos 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

Entonces puedes ssh así:

ssh -J hostB hostC

El salto también se puede configurar para ssh hostC:

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

Respuesta2

Para complementar la respuesta de gronostaj, así es como se crea un socket con -J:

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

Luego, para usar el socket para iniciar sesión en C:

$ ssh -S socket C

De esta manera no es necesario que escriba ninguna contraseña.

información relacionada