Estoy buscando una forma simple de SSH desde mi máquina local, A, a través de un proxy, B, a un host de destino, C. La clave privada que acompaña a la clave pública en C está en B, y no puedo pon esa llave en mi máquina local. ¿Algun consejo?
Además, me gustaría poder hacer esto usando ~ / .ssh / config.
¡Gracias!

Respuestas:
Esquemático:
Precondiciones
Aestá ejecutando ssh-agent;Apuede accederB;Bpuede accederC;ALa clave pública ssh está presente enB:~/.ssh/authorized_keysBLa clave pública ssh está presente enC:~/.ssh/authorized_keysEn
~/.ssh/configadelanteA, agregueSi su clave privada ssh en B está en una ubicación no estándar, agregue su ruta después
ssh-add.Ahora debería poder acceder
CdesdeA:fuente
ProxyJump B. fuente: wikilibrosnc?ForwardAgent yesantes delProxyJumpcomando.Compruebe si lo siguiente funciona.
Use el siguiente comando si desea usar la clave almacenada en B.
Aquí estamos especificando el comando, es decir,
ssh -i /path/to/identity_on_B Cque se ejecutará en B en lugar de un shell de inicio de sesión.fuente
He resuelto esto ahora. Aquí está la solución, que es bastante sencilla. Debería haberlo visto antes:
~ / .ssh / config:
'B' es el servidor proxy por el que estás saltando. Debe configurarse como normalmente configuraría el acceso a un servidor.
'C' es el host de destino. Debe configurarse para usar 'B' en el proceso de conexión. El archivo de identidad en 'C' es la ruta a la clave ssh en 'B'. ProxyCommand utiliza Netcat para abrir la conexión a 'C' desde 'B'. Netcat, o nc, deberá instalarse en 'B'.
Espero que esto ayude a otros.
fuente
Escribí un script simple para enumerar básicamente mis claves ssh en la instancia remota y luego agregué la que seleccioné a mi agente ssh local. Esto no es muy limpio, pero me permite mantener todas las claves en una ubicación remota en lugar de localmente.
Aquí está el script si alguien está interesado:
fuente
fuente
Que hacer:
ssh someuser@IP_Dtal que
A -> B-> C -> Ddonde A es el anfitrión en el que estás,edite su ~ / .ssh / config local así:
Esta respuesta se basa en la respuesta elegida. Tuve que descubrir cómo encajan varios usuarios en todo el escenario.
Esto funciona para mi. HTH.
fuente
La respuesta de Snowball ayudó mucho. Sin embargo, hice algunas modificaciones al comando y quería explicar cómo funciona. Dada esta situación:
Modifique su
~/.ssh/configarchivo y agregue el host aBtravés del cual desea saltar, tal como configuraría normalmente un host:Luego agrega el host en el
Cque desea terminar:Tenga en cuenta el
ProxyCommand, donde:ssh -T -qindica que no debe asignar un pseudo-TTY (-T) y ser silencioso (-q);B, agregamos la clave a las claves SSH deAthroughssh-add;-o 'ForwardAgent yes'.ssh-add -t 1indica que quiero que la clave se agregue solo durante el segundo segundo necesario para autenticarse en el host final C;nc %h %pinicia unanetcatconexión con el host final%hen el puerto%p(ambos serán completados por SSH según la información en el~/.ssh/configarchivo).Si necesita especificar una clave personalizada
Bpara usar, puede hacerlo modificando lassh-addparte:fuente