Puedo SSH el servidor host de salto B desde mi máquina local A a través de ssh B
.
El servidor C solo es direccionable (tiene una dirección C.internal) y accesible desde B a través de ssh C
.
¿Cómo ingreso SSH a C directamente desde mi máquina local?
¿Cómo se verían el comando SSH y el archivo de configuración?
configuración ssh en A:
Host B
User userB
HostName B.example.com
IdentityFile ~/.ssh/keyB
configuración ssh en B:
Host C
HostName C.internal
User userC
IdentityFile ~/.ssh/keyC
¿Es posible hacer esto sin copiar ~/.ssh/keyC
desde el host B a la máquina local A?
Respuesta1
Hay varias opciones, pero ninguna de ellas es de "comando único":
Podrías ejecutar un comando SSH en B que simplemente ejecuta un segundo comando SSH en C; necesitas agregar la -t
opción para que funcione para SSH interactivo:
ssh -t hostB "ssh hostC"
ssh -t hostB "ssh -t hostC htop"
ssh hostB ssh hostC ls -la /etc
Si desea una forma de SSH "directamente" de A a C, necesitará algún artilugio adicional para reenviar una conexión de agente sshdesde Bal sistema local (es decir, lo contrario de lo que ssh -A
haría normalmente).
SSH al host B, luego inicie un agente ssh en una ruta especificada manualmente. Utilice la función SSH "transmitir hacia adelante" para permitir que los clientes locales accedan al proceso del agente remoto:
HostA$ ssh -t -L /tmp/agent:/tmp/agent HostB \ "ssh-agent -a /tmp/agent sh -c 'ssh-add ~/.ssh/keyC && sleep infinity'"
(La opción ssh/config es
LocalForward
).Mientras la conexión anterior esté ejecutándose, puede conectarse desde HostA a HostC usando la configuración normal de ProxyJump, usando claves que solo existen en HostB:
HostA$ export SSH_AUTH_SOCK=/tmp/agent HostA$ ssh -J HostB HostC
(Las opciones de ssh/config son
IdentityAgent
yProxyJump
.)
Otra opción es copiar keyC
de B a A y almacenarlo.en hardware segurocomo un chip TPM o una tarjeta inteligente (también cuenta una Yubikey con modo PIV). Esto permite utilizar la clave localmente en la máquina A sin posibilidad de robo.
(Para TPM2.0 en Linux, puede optar por tpm2-pkcs11
o ssh-tpm-agent
; TPM2.0 en Windows se puede usar a través de PuTTY-CAC. Para Yubikeys con PIV, hay módulos PKCS#11 tanto para Windows como para Linux. Estoy usando un eToken 5110 de Ebay También hay una manera de usar claves FIDO2 con SSH, pero requeriría generar una nueva clave).
Respuesta2
Necesita un archivo ssh_config como global /etc/ssh/ssh_config
o como usuario ~/.ssh/config
:
Host B
HostName 10.0.0.1
User username_on_B
IdentityFile ~/.ssh/id_rsa_for_B
ForwardAgent yes
# final destination
Host C
HostName C.internal
User your_username_on_C
ProxyJump B
IdentityFile ~/.ssh/id_rsa_for_C
Ahora, desde A
, puedes ssh
C
.