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
A
está ejecutando ssh-agent;A
puede accederB
;B
puede accederC
;A
La clave pública ssh está presente enB:~/.ssh/authorized_keys
B
La clave pública ssh está presente enC:~/.ssh/authorized_keys
En
~/.ssh/config
adelanteA
, 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
C
desdeA
:fuente
ProxyJump B
. fuente: wikilibrosnc
?ForwardAgent yes
antes delProxyJump
comando.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 C
que 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_D
tal que
A -> B-> C -> D
donde 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/config
archivo y agregue el host aB
través del cual desea saltar, tal como configuraría normalmente un host:Luego agrega el host en el
C
que desea terminar:Tenga en cuenta el
ProxyCommand
, donde:ssh -T -q
indica que no debe asignar un pseudo-TTY (-T
) y ser silencioso (-q
);B
, agregamos la clave a las claves SSH deA
throughssh-add
;-o 'ForwardAgent yes'
.ssh-add -t 1
indica que quiero que la clave se agregue solo durante el segundo segundo necesario para autenticarse en el host final C;nc %h %p
inicia unanetcat
conexión con el host final%h
en el puerto%p
(ambos serán completados por SSH según la información en el~/.ssh/config
archivo).Si necesita especificar una clave personalizada
B
para usar, puede hacerlo modificando lassh-add
parte:fuente