Paso 1
Asegúrese de que su agente local esté listo
El hecho de que pueda ingresar a su servidor bastion sin especificar su ruta de clave o que se le solicite la contraseña, no significa que su agente ssh esté ejecutando y manteniendo su clave. Algunos sistemas operativos modernos (por ejemplo: OSX) manejan esto por usted.
En su máquina local
$ ssh-add -L
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13== ~/.ssh/mykey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13== ~/.ssh/sharedkey.pem
Figura 1
Eso significa que su agente se está ejecutando y tiene su clave.
$ ssh-add -L
The agent has no identities.
Figura 2
Eso significa que no ha agregado ninguna clave a su agente. Arregla eso con:
ssh-add ~/.ssh/mykey.pem ~/.ssh/sharedkey.pem
Fig. 3
Paso 2
Asegúrese de que su agente remoto esté listo
SSH en su servidor de bastión y repita la comprobación de la figura 1 y la figura 2 . Sin embargo, el error que es más probable que obtenga es este:
$ ssh-add -L
Could not open a connection to your authentication agent.
fig.4
Lo más probable es que su cliente SSH no esté reenviando su conexión de agente de autenticación.
Puede forzar esto con el -A
indicador (siempre que la configuración sshd en el servidor lo permita, que es el valor predeterminado ).
$ ssh -A bastion.ec2
fig.5
Paso 3
Asegúrate de estar usando las teclas correctas
Si ha agregado claves a su agente, su agente está reenviando y su agente remoto enumera sus claves locales. Solo hay dos razones probables por las que no está obteniendo una conexión. O no está utilizando la clave correcta o no está utilizando el nombre de usuario correcto.
Envíe la contraparte pública a su clave privada:
$ cd
$ cd .ssh
$ ssh-keygen -y -f mykey.pem
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13
$ ssh-keygen -y -f sharedkey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13
fig.6
Estos deben ser los mismos que lo que estaban viendo desde ssh-add -L
arriba de la ==
cerca del final.
Ahora, de una forma u otra, debe ingresar al cuadro al que no se está conectando y mirar el contenido del $HOME/.ssh/authorized_keys
archivo para el usuario al que está tratando de conectarse. Debe asegurarse de que la clave pública que genera con el comando anterior esté en ese archivo en una línea por sí misma. No puedes confiar en que los sharedkey.pub
cubos Bro 2 te hayan enviado por correo electrónico. ¡Verificar! Esto puede requerir que alguien más pueda usar SSH como ese usuario para obtener el archivo autorizado_claves u obtener acceso de root. Si has llegado hasta aquí y todavía no funciona, estás más allá de tomar atajos.
Etapa 4
Hazlo facil
Esperemos que los pasos anteriores lo hayan incluido. Ahora hagamos que este dolor de cabeza desaparezca mientras esté usando esta estación de trabajo.
Configure su cliente ssh local
Host *
# A lot of people put an IdentityFile line in this Host * section.
# Don't do that unless you will use only 1 key everywhere forever.
#IdentityFile id_rsa
Host bastion.ec2
# You want to make sure you always forward your agent to this host.
# But don't forward to untrusted hosts. So don't put it in Host *
ForwardAgent yes
# Go a head and put the IP here in case DNS ever fails you.
# Comment it out if you want. Having it recorded is a good backup.
HostName 172.31.0.1
# You don't want to create a proxy loop later, so be explicit here.
ProxyCommand none
# SSH should try using all keys in your .ssh folder, but if you
# know you want this key, being explicit speeds authentication.
IdentityFile ~/.ssh/mykey.pem
# Connect effortlessly by hostname or IP address
# This assumes that your internal DNS uses the fake TLD ec2
# This assumes that 172.31.0.0 is your C-Class subnet
Host *.ec2 172.31.*
# This command says proxy all ssh connections through bastion as if
# you had done an ssh -A
ProxyCommand ssh -W %h:%p bastion.ec2
ForwardAgent yes
# These next lines are documentation you leave as a love letter to
# your future self when all else fails or you have to help a
# coworker and decide to look at your own config.
# ssh-add ~/.ssh/*.pem
# ssh -At bastion.ecs ssh [email protected]
fig.7
Si no quita nada más de la figura 7 , debería ser el uso adecuado de ProxyCommand
& ForwardAgent
.
Rellenar automáticamente su .bash_profile
No querrá hacerlo ssh-add
manualmente cada vez que inicie sesión en su máquina. ~/.bash_profile
es un script que se ejecuta cada vez que inicia sesión **. Ponga la línea de la fig. 3 allí y siempre debe tener a su agente listo.
** No confunda esto con el .bashrc
que se ejecuta para cada nueva terminal [interactiva]. Su agente continúa ejecutándose incluso si cierra todas sus sesiones de terminal. No es necesario recargar tus llaves
Alternativa al uso de .bash_profile
También he creado una esencia que agrega un OSX / macOS Launch Agent . Puede utilizar este método para iniciar su ssh-agent
arranque en. Es muy fácil de instalar:
curl -sSL https://gist.github.com/RichardBronosky/429a8fff2687a16959294bcee336dd2a/raw/install.sh | bash
ForwardAgent yes
a-A
si el anfitrión no lo permite.No reenvías las llaves. Reenvía el agente y puede tener claves completamente independientes de las que está utilizando para la autenticación en el primer salto. Verifique las claves en su agente usando
ssh-add -L
.Pero aún mejor, ejecute la conexión
ProxyCommand ssh -W %h:%p [email protected]
, lo que evitará la necesidad de reenviar el agente, el montón o las opciones de línea de comandos y la necesidad de autenticarse desde el host inmediato.Simplemente puede poner eso en su configuración (ver
man ssh_config
).fuente
ssh-add mykey.pem sharedkey.pem
luego confirme conssh-add -L
entoncesssh -At [email protected] ssh [email protected]