Agregue la clave privada permanentemente con ssh-add en Ubuntu

Tengo una clave privada protegida con una contraseña para acceder a un servidor a través de SSH.

Tengo 2 máquinas Linux (ubuntu 10.04) y el comportamiento del comando ssh-add es diferente en las dos.

En una máquina, una vez que uso “ssh-add .ssh / identity” e ingresé mi contraseña, la clave se agregó permanentemente, es decir, cada vez que apago la computadora y vuelvo a iniciar sesión, la clave ya está agregada.

En el otro, tengo que agregar la clave cada vez que inicio sesión.

Por lo que recuerdo, hice lo mismo en ambos. La única diferencia es que la clave se creó en la que se agrega permanentemente.

¿Alguien sabe cómo agregarlo permanentemente a la otra máquina también?

Una solución sería forzar que los archivos de claves se guarden permanentemente, agregándolos en su archivo ~/.ssh/config :

 IdentityFile ~/.ssh/gitHubKey IdentityFile ~/.ssh/id_rsa_buhlServer 

Si desea que todos los usuarios de la computadora utilicen la clave, coloque estas líneas en /etc/ssh/ssh_config y la clave en una carpeta accesible para todos.

Además, si desea establecer la clave específica para un host, puede hacer lo siguiente en su ~ / .ssh / config:

 Host github HostName github.com User git IdentityFile ~/.ssh/githubKey 

Tendrá que clonar con @github en lugar de @ github.com, pero esto tiene la ventaja de que solo se probará esta clave.

Esto no me respondió el mismo problema en Mac OS X Lion. Terminé agregando:

 ssh-add ~/.ssh/id_rsa &>/dev/null 

Para mi .zshrc (pero .profile también estaría bien), que parece haberlo arreglado.

(Como se sugiere aquí: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )

Resolví ese problema en Mac OSX (10.10) usando la opción -K para ssh-add:

 ssh-add -K ~/.ssh/your_private_key 

Para macOS 10.12 y posteriores, necesita editar adicionalmente su configuración ssh como se describe aquí: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain

Simplemente agregue el llavero, como se menciona en Consejos rápidos de Ubuntu https://help.ubuntu.com/community/QuickTips

Qué

En lugar de iniciar constantemente ssh-agent y ssh-add, es posible usar keychain para administrar sus claves ssh. Para instalar Keychain, puede hacer clic aquí, o usar Synaptic para hacer el trabajo o apt-get desde la línea de comando.

Línea de comando

Otra forma de instalar el archivo es abrir el terminal (Aplicación-> Accesorios-> Terminal) y escribir:

 sudo apt-get install keychain 

Editar archivo

Luego debe agregar las siguientes líneas a su $ {HOME} /. Bashrc o /etc/bash.bashrc:

 keychain id_rsa id_dsa . ~/.keychain/`uname -n`-sh 

Probé la solución de @ Aaron y no funcionó para mí, porque volvería a agregar mis claves cada vez que abriera una nueva pestaña en mi terminal. Así que lo modifiqué un poco (tenga en cuenta que la mayoría de mis claves también están protegidas por contraseña, así que no puedo simplemente enviar la salida a / dev / null):

 added_keys=`ssh-add -l` if [ ! $(echo $added_keys | grep -o -e my_key) ]; then ssh-add "$HOME/.ssh/my_key" fi 

Lo que hace es que comprueba el resultado de ssh-add -l (que enumera todas las claves que se han agregado) para una clave específica y, si no lo encuentra, lo agrega con ssh-add .

Ahora, la primera vez que abro mi terminal, me piden las contraseñas para mis claves privadas y no me preguntan nuevamente hasta que reinicie (o cierre sesión – no he comprobado) mi computadora.

Como tengo un montón de claves, almaceno el resultado de ssh-add -l en una variable para mejorar el rendimiento (al menos supongo que mejora el rendimiento :))

PD: estoy en Linux y este código fue para mi archivo ~/.bashrc – si estás en Mac OS X, entonces supongo que deberías agregarlo a .zshrc o .profile

EDITAR: Como señaló @Aaron en los comentarios, el archivo .zshrc se usa desde el shell zsh , por lo que si no estás usando eso (si no estás seguro, lo más probable es que estés usando bash ) , este código debería ir a su archivo .bashrc .

En mi caso, la solución fue:

Los permisos en el archivo de configuración deben ser 600. chmod 600 config

Como se mencionó en los comentarios anteriores por generalopinion

No es necesario tocar el contenido del archivo de configuración.

En Ubuntu 14.04 (quizás antes, tal vez aún) ni siquiera necesitas la consola:

  • inicia seahorse o lanza lo que encuentres buscando “clave”
  • crea una clave SSH allí (o importa una)
    • no es necesario dejar la frase de contraseña vacía
    • se le ofrece incluso para enviar la clave pública a un servidor (o más)
  • terminará con una ejecución de ssh-agent y esta clave cargada, pero bloqueada
  • El uso de ssh recogerá la identidad (es decir, la clave) a través del agente
  • en el primer uso durante la sesión, se verificará la frase de contraseña
    • y tienes la opción de desbloquear automáticamente la clave al iniciar sesión
    • esto significa que la autenticación de inicio de sesión se utilizará para ajustar la contraseña de la clave
  • nota: si desea reenviar su identidad (es decir, reenvío de agente) invoque su ssh con -A o haga que sea el valor predeterminado
    • de lo contrario, no puede autenticarse con esa clave en una máquina a la que se conecte más tarde en una tercera máquina

muy simple ^ _ ^ dos pasos

1.yum instalar llavero

2.añadir el código a continuación a .bash_profile

 /usr/bin/keychain $HOME/.ssh/id_dsa source $HOME/.keychain/$HOSTNAME-sh 

Agregar las siguientes líneas en “~ / .bashrc” resolvió el problema para mí. Estoy usando el escritorio de Ubuntu 14.04.

 eval `gnome-keyring-daemon --start` USERNAME="reynold" export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)" export SSH_AGENT_PID="$(pgrep gnome-keyring)" 

Esto funcionó para mí.

 ssh-agent /bin/sh ssh-add /path/to/your/key 

Ejecuto Ubuntu usando dos claves id_rsa. (uno personal para el trabajo). ssh-add recordaría una clave (personal) y olvidaría la compañía una vez.

Revisando la diferencia entre los dos, vi que mi clave personal tenía 400 derechos mientras que la compañía tenía 600 derechos. (tenía u + w). La eliminación de la escritura del usuario directamente desde la clave de la empresa (uw o establecida en 400) solucionó mi problema. ssh-add ahora recuerda ambas claves.

Para aquellos que usan Fish shell puedes usar la siguiente función y luego llamarlo en ~ / .config / fish / config.fish. Cargará todas las claves que comienzan con id_rsa en el ssh-agent .

 # Load all ssh keys that start with "id_rsa" function loadsshkeys set added_keys (ssh-add -l) for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*") if test ! (echo $added_keys | grep -o -e $key) ssh-add "$key" end end end # Call the function to run it. loadsshkeys 

Si desea que el ssh-agent inicie automáticamente cuando abre un terminal, puede usar tuvistavie / fish-ssh-agent para hacerlo.

Tuve el mismo problema en Ubuntu 16.04: algunas claves se agregaron permanentemente, para otras tuve que ejecutar ssh-add en cada sesión. Descubrí que las claves que se agregaron de forma permanente tenían claves privadas y públicas ubicadas en ~/.ssh y las claves que se olvidaron en cada sesión solo tenían claves privadas en ~/.ssh dir. Entonces, la solución es simple: debe copiar las claves privadas y públicas en ~/.ssh antes de ejecutar ssh-add .