Así que básicamente estoy tratando de hacer esto:
ssh [email protected] -t ssh bob2@test-vm
lo anterior funciona bien si lo coloco en la terminal, sin embargo, me resulta difícil intentar replicarlo a través del archivo de configuración .ssh.
Esto es lo que tengo dentro del archivo de configuración:
Host bastion
HostName 35.192.152.35
User bob2
Host test-vm
User bob2
FOrwardAgent yes
ProxyCommand ssh bastion nc %h %p 2> /dev/null
Sin embargo, aparece un error que dice "permiso denegado", ¿archivo de clave pública no válido? Se me ocurrió lo anterior de esta publicación: https://unix.stackexchange.com/questions/124078/how-to-ssh-to-a-server-using-otro-servidor-con-clave-del-segundo-servidor
De alguna manera funcionó para el chico, pero no parece funcionar para mí. También intenté permitir el reenvío de agentes y el reenvío de TCP en la configuración sshd_chroot en todas las partes (origen, bastión y servidor), pero eso no hizo la diferencia.
si fuerzo especificar las rutas de identidad:
Host bastion
HostName 35.192.152.35
User bob2
IdentityFile /Users/bob/.ssh/id_rsa
Host test-vm
User bob2
FOrwardAgent yes
ProxyCommand ssh bastion nc %h %p 2> /dev/null
IdentityFile /home/bob2/.ssh/id_ed25519
Luego aparece el mismo error, además de decir que no pudo encontrar el directorio "/home/bob2/.ssh/id_ed25519"
¿Alguien tiene alguna idea?
Respuesta1
Una vez que se dé cuenta de que los bastiones sirven para derrotar los firewalls de la red y no para almacenar claves, puede cambiar esto a una solución de 2 comandos con una configuración mínima.
En A, su máquina local, asegúrese de tener un agente ssh ejecutándose.
Realice un comando único para B, donde B tiene la siguiente configuración:
Host B
ForwardAgent yes
User proxyuser
Y ejecute el siguiente comando:
$ ssh B ssh-add # and possibly a reference to a non-standard key
En este punto, su agente ssh local tendrá la clave remota en su caché.
Luego, un simple -J
o ProxyJump
to C
'simplemente funcionará':
Host C
User user
ProxyJump proxyuser@B
$ ssh C
Con el ligero inconveniente de un comando adicional de una sola vez, puedes mantener tu configuración bastante sana en mi opinión.
Podría preguntarse si almacenar la clave en el bastión realmente le brinda seguridad adicional si de todos modos se almacenará en caché en su máquina local. Por supuesto, hay un ligero beneficio denotener la clave almacenada en el disco, pero si su máquina local es pirateada no hay mucha diferencia entre leer un archivo o comunicarse con un agente ssh cargado con claves.
Respuesta2
Parece que desea que su configuración permita que test-vm busque la clave en bastión. Entonces sugiero:
- Copie el archivo de clave a la carpeta .ssh de bob2 en bastión.
- agregarComando proxycon ssh-add en su configuración.
Respuesta3
A continuación funciona para mí... Casi igual que el tuyo, excepto que especifico la dirección IP del destino final (tal vez no sea relevante en tu caso) yTENÍA QUE COPIARla clave del bastión a mi host local ya que mi ssh_config está encontrando archivos clave aquí, no en el bastión a mitad de camino:
==== added to .ssh/config ====
Host mybastion
HostName 133.35.41.9
User bastuser
IdentityFile /Users/bchapman/.ssh/bast_priv.key
Host mytarget
HostName 109.0.1.38
ProxyCommand ssh -q -W %h:%p mybastion
User targuser
IdentityFile /Users/bchapman/.ssh/targ_priv.key
==============
Después de eso puedo ssh mytarget, scp localfile mytarget:, etc. muy bien