ubuntu - una - ssh keygen
Agregar clave privada de forma permanente con ssh-add en Ubuntu (13)
Agregar las siguientes líneas en "~ / .bashrc" solucionó el problema por 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)"
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 ambas.
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 de forma permanente.
¿Alguien sabe cómo agregarlo permanentemente a la otra máquina también?
Ejecuto Ubuntu usando dos claves id_rsa. (uno personal por trabajo). ssh-add recordaría una clave (personal) y olvidaría la compañía una cada vez.
Comprobando la diferencia entre los dos, vi que mi clave personal tenía 400 derechos, mientras que la compañía una tenía 600 derechos. (tenía u + w). Eliminar el usuario de escritura directamente desde la clave de la empresa (uw o establecer a 400) solucionó mi problema. ssh-add ahora recuerda ambas teclas.
En Ubuntu 14.04 (quizás antes, quizás todavía) ni siquiera necesitas la consola:
- inicia el
seahorse
o lanza esa cosa que encuentres buscando "clave" - crear una clave SSH allí (o importar una)
- no hay necesidad de dejar la contraseña vacía
- se le ofrece incluso empujar la clave pública a un servidor (o más)
- terminará con un ssh-agent en ejecución 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 comprobará 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 envolver la frase de contraseña de la clave
- nota: si desea reenviar su identidad (es decir, el reenvío de agente) invoque su
ssh
con-A
o haga que sea el predeterminado- de lo contrario, no podrá autenticarse con esa clave en una máquina en la que inicie sesión más tarde en una tercera máquina
En mi caso la solución fue:
Los permisos en el archivo de configuración deben ser 600.
chmod 600 config
Como se menciona en los comentarios anteriores por generalopinion
No es necesario tocar el contenido del archivo de configuración.
Esto funcionó para mí.
ssh-agent /bin/sh
ssh-add /path/to/your/key
Esto no respondió el mismo problema para mí en Mac OS X Lion. Acabé agregando:
ssh-add ~/.ssh/id_rsa &>/dev/null
Para mi .zshrc (pero .profile también estaría bien), que parece haberlo solucionado.
(Como se sugiere aquí: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )
Intenté la solución de @ Aaron y no me funcionó del todo, porque volvería a agregar mis claves cada vez que abría 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 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 comprueba la salida de ssh-add -l
(que enumera todas las claves que se han agregado) para una clave específica y, si no la encuentra, la agrega con ssh-add
.
Ahora, la primera vez que abro mi terminal, me piden las contraseñas de mis claves privadas y no se me vuelve a preguntar hasta que reinicie (o cierre la sesión, no he comprobado) mi computadora.
Como tengo un montón de claves, almaceno la salida de ssh-add -l
en una variable para mejorar el rendimiento (al menos creo que mejora el rendimiento :))
PD: Estoy en Linux y este código fue a mi archivo ~/.bashrc
. Si estás en Mac OS X, asumo que debes agregarlo a .zshrc
o .profile
EDITAR: Como lo señaló @Aaron en los comentarios, el archivo .zshrc
se usa desde el shell zsh
, así que si no lo está usando (si no está seguro, lo más probable es que esté usando bash
) , este código debe ir a su archivo .bashrc
.
Para aquellos que usan Fish Shell, puede usar la siguiente función y luego llamarla en ~ / .config / fish / config.fish. Cargará todas las claves que comiencen 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 ssh-agent
inicie automáticamente cuando abre un terminal, puede usar tuvistavie/fish-ssh-agent para hacer esto.
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 versiones posteriores, deberá editar adicionalmente su configuración ssh como se describe aquí: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Solo agregue el llavero, como se indica en los 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 el llavero, puede simplemente hacer clic aquí o usar Synaptic para hacer el trabajo o apt-get desde la línea de comandos.
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
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 permanentemente tenían tanto la clave privada como la pública ubicadas en ~/.ssh
y las claves que se olvidaron en cada sesión tenían solo claves privadas en ~/.ssh
dir. Así que la solución es simple: debe copiar tanto la clave privada como la pública en ~/.ssh
antes de ejecutar ssh-add
.
muy simple ^ _ ^ dos pasos
1.yum instalar llavero
2. agregue el siguiente código a .bash_profile
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
Una solución sería forzar el ~/.ssh/config
permanente de los archivos clave, agregándolos en su archivo ~/.ssh/config
:
IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer
Para que esto funcione, el archivo debe tener chmod 600. Puede usar el comando chmod 600 config
.
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 a la que todos puedan acceder.
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
Deberá clonar con @github en lugar de @ github.com, pero esto tiene la ventaja de que solo se intentará con esta clave.