Pregunta

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

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

En una máquina, una vez que utilizo "ssh-add .ssh / identity" y entré en mi contraseña, se añadió la tecla de forma permanente, es decir, cada vez que apagar la computadora e iniciar sesión de nuevo, ya se ha agregado la clave.

En el otro, tengo que añadir que la llave cada vez de inicio de sesión.

Por lo que yo recuerdo, hice lo mismo en ambos. La única diferencia es que la clave fue creada en el que se añade de forma permanente.

¿Alguien sabe cómo añadir de forma permanente a la otra máquina así?

¿Fue útil?

Solución

Una solución sería la de obligar a los archivos clave para mantenerse en forma permanente, mediante su inclusión en el archivo de ~/.ssh/config:

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

Si usted no tiene un 'config' archivo en el directorio ~ / .ssh, entonces usted debe crear una. No necesita derechos de root, por lo que simplemente:

nano ~/.ssh/config

... y entrar en las líneas anteriores según sus necesidades.

Para que esto funcione las necesidades de archivos para tener chmod 600. Puede utilizar el comando chmod 600 ~/.ssh/config.

Si desea que todos los usuarios del equipo a utilizar la llave poner estas líneas en /etc/ssh/ssh_config y la clave en una carpeta accesible a todos.

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

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

Esto tiene la ventaja cuando se tiene muchas identidades que un servidor no le rechazan porque intentó en primer lugar las identidades equivocadas. Sólo se trató de la identidad específica.

Otros consejos

Esto no respondió a la misma cuestión para mí en Mac OS X Lion. Acabé añadiendo:

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

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

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

I resolvió el problema en Mac OS X (10.10) mediante el uso de la opción -K para ssh-add:

ssh-add -K ~/.ssh/your_private_key

para MacOS 10.12 y posteriormente necesita editar, además, su configuración de ssh como se describe aquí: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain

Simplemente añadir el llavero, como se indica en Consejos rápidos Ubuntu https://help.ubuntu.com/community/QuickTips

¿Qué

En lugar de estar constantemente puesta en marcha de ssh-agent y ssh-add, es posible utilizar llavero para administrar sus claves SSH. Para instalar llavero, puede hacer clic aquí, o usar Synaptic para hacer el trabajo o apt-get desde la línea de comandos.

Línea de comandos

Otra forma de instalar el archivo es abrir el terminal (Aplicaciones-> Accesorios-> Terminal) y escriba:

sudo apt-get install keychain

Editar archivo

A continuación, debe añadir las siguientes líneas a su $ {HOME} / .bashrc o /etc/bash.bashrc:.

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

He intentado @ solución de Aaron y no funcionó para mí, porque sería volver a agregar las llaves de mi cada vez que abría una nueva pestaña en mi terminal. Así que he modificado un poco (nota que la mayoría de las llaves también están protegidos con contraseña, así que no puedo acaba de 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 esto hace es que se comprueba la salida del ssh-add -l (que enumera todas las claves que se han añadido) para una clave específica y si no lo encuentra, entonces se añade con ssh-add.

Ahora, la primera vez que abro mi terminal me piden las contraseñas de mis claves privadas y no me preguntó de nuevo hasta que reinicio (o cierre de sesión - No he comprobado). Mi equipo

Desde que tengo un manojo de llaves que se almacenan los resultados de ssh-add -l en una variable para mejorar el rendimiento (al menos supongo que mejora el rendimiento :))

PD: estoy en Linux y el código fui a mi archivo ~/.bashrc - si usted está en Mac OS X, entonces supongo que debe añadirlo a .zshrc o .profile

EDIT: Como ha señalado @Aaron en los comentarios, el archivo se utiliza .zshrc de la cáscara zsh - por lo que si usted no está usando eso (si no estás seguro, lo más probable, que está utilizando en su lugar bash), este código debe ir a su archivo .bashrc.

En mi caso, la solución fue:

  

Los permisos en el archivo de configuración debería ser 600. chmod 600 config

Como se ha mencionado en los comentarios anteriores por  generalopinion

No hay necesidad de tocar el contenido del archivo de configuración.

Yo tenía el mismo problema en Ubuntu 16.04: se añadieron algunas claves de forma permanente, por los demás que tenía que ejecutar ssh-add en cada sesión. Descubrí que las teclas que se añadieron de forma permanente tenido tanto clave privada y pública situada en ~/.ssh y las llaves que fueron olvidados en cada sesión sólo tenía las claves privadas en dir ~/.ssh. Así solución es simple:. Debería copiar tanto clave privada y pública antes de ejecutar a ~/.ssh ssh-add

En Ubuntu 14.04 (tal vez antes, quizá todavía) que ni siquiera necesita la consola:

  • start seahorse o lanzamiento de esa cosa que encuentre la búsqueda de "clave"
  • crear una clave SSH allí (o uno de importaciones)
    • sin necesidad de salir de la frase de contraseña vacío
    • que es ofertado al usuario a empujar incluso la clave pública a un servidor (o más)
  • que va a terminar con un ssh-agent con esta clave y cargado, pero bloqueado
  • usando captura de ssh voluntad la identidad (es decir, clave) a través del agente
  • en el primer uso durante la sesión, se comprobará la contraseña
    • y tienes la opción de desbloquear automáticamente la clave de inicio de sesión
    • Esto significa que la autenticación de inicio de sesión se utiliza para envolver la frase de contraseña de la clave
  • Nota: si desea pasar su identidad (es decir, agente de reenvío) invocan tu ssh con -A o hacer que el valor por defecto
    • de lo contrario no se puede autenticar con esa tecla en una máquina de hacer login para luego a una tercera máquina

ejecutar Ubuntu usando dos de los principales id_rsa. (Uno de un personal para el trabajo). ssh-add recordaría una clave (uno personal) y olvidarse de la empresa en uno cada vez.

El registro de salida la diferencia entre los dos vi mi clave personal tenía 400 derechos mientras que la compañía tenía 600 derechos. (Tenía u + w). Eliminar el derecho del usuario de escritura de la clave de la empresa (u-W o el conjunto a 400) fijado mi problema. ssh-add ahora recuerda las dos teclas.

La adición de las siguientes líneas en "~ / .bashrc" resolvió el problema para mí. Estoy usando Ubuntu 14.04 escritorio.

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)"

muy simple ^ _ ^ dos pasos

1.yum instalar llavero

2.Add siguiente código para .bash_profile

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

Esto funcionó para mí.

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

Para los que utilizan los crustáceos puede utilizar la siguiente función a continuación, llamar en ~ / .config / pescado / config.fish. Se carga 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 usted quiere tener el auto ssh-agent comenzó cuando se abre un terminal que puede utilizar tuvistavie / peces-ssh-agent para hacer esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top