Cómo agregar una clave privada de forma permanente con ssh-add en Ubuntu? [cerrado]
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í?
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.