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 ingreso mi contraseña, la clave se agrega de forma permanente, es decir, cada vez que apago la computadora e inicio sesión nuevamente, 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?
Respuestas:
Una solución sería forzar a los archivos clave a mantenerse permanentemente, agregándolos en su
~/.ssh/config
archivo:Si no tiene un archivo 'config' en el directorio ~ / .ssh, debe crear uno. No necesita derechos de root, así que simplemente:
... e ingrese las líneas de arriba según sus requisitos.
Para que esto funcione, el archivo debe tener chmod 600. Puede usar el comando
chmod 600 ~/.ssh/config
.Si desea que todos los usuarios de la computadora usen la clave, coloque estas líneas
/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:
Esto tiene la ventaja cuando tiene muchas identidades que un servidor no le rechaza porque primero probó las identidades incorrectas. Solo se intentará la identidad específica.
fuente
chmod 600 config
ssh-add ~/.ssh/gitHubKey
, recordará su contraseña clave. La solución que propuse fue establecerlo permanentemente en todos los reinicios.Esto no respondió el mismo problema para mí en Mac OS X Lion. Terminé agregando:
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/ )
fuente
ForwardAgent yes
a mi.ssh/config
) resolvió ese problema fantásticamente. Como resultado, podría serssh-add &>/dev/null
que el comportamiento predeterminado dessh-add
parece ser agregar las claves que encuentra en su.ssh
carpeta.-K
agrega claves al llavero de OS X, que las GUI de OS X usan para autenticarse en servidores extranjeros. El póster en esa Q se conecta a través de un túnel SSH, pero todavía se conecta a un servidor remoto. A - [Túnel SSH] -> B El caso en el que estoy es que estoy en un servidor remoto pero quiero que la autenticación esté en contra de las credenciales en mi sistema doméstico. A <- [Auth] - B - [Connect] -> C Así-K
que en realidad no ayuda, pero es una gran solución para la otra Q.Resolví ese problema en Mac OSX (10.10) usando la opción -K para ssh-add:
Para macOS 10.12 y posterior, necesita editar adicionalmente su configuración ssh como se describe aquí: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
fuente
man ssh-add
macOS High Sierra,ssh-add -K
guardará la frase de contraseña en el llavero y, después de reiniciar, simplemente usessh-add -A
, que no necesita que ingrese su frase de contraseña.Simplemente agregue el llavero, como se menciona 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 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:
Editar archivo
Luego debe agregar las siguientes líneas a su $ {HOME} /. Bashrc o /etc/bash.bashrc:
fuente
.
es un alias parasource
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 con contraseña, por lo que no puedo enviar la salida a / dev / null):
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 conssh-add
.Ahora, la primera vez que abro mi terminal, me piden las contraseñas de mis claves privadas y no me vuelven a preguntar hasta que reinicie (o cierre la sesión, no he verificado) mi computadora.
Como tengo un montón de claves, almaceno la salida
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 a mi
~/.bashrc
archivo; si está en Mac OS X, supongo que debe agregarlo.zshrc
o.profile
EDITAR: como señaló @Aaron en los comentarios, el
.zshrc
archivo se usa desde elzsh
shell, por lo que si no lo está usando (si no está seguro, lo más probable es que lo esté usandobash
), este código debería ve a tu.bashrc
archivo.fuente
.zshrc
es para elzsh
shell, que uso en lugar debash
. Si está utilizandobash
Mac OS X (el valor predeterminado), también estaría.bashrc
allí.ssh-add -l
código de retornoecho $?
se puede usar para decidir si agregar clave o no. Soy mi máquina Linux con bash,ssh-add -l
no mostrará el nombre de archivo clave. El código de retorno siempre funciona.En mi caso la solución fue:
Como se menciona en los comentarios anteriores por generalopinion
No es necesario tocar el contenido del archivo de configuración.
fuente
~/.ssh/config
archivo es de lectura / escritura para el usuario, y no puede ser escrito por otros.Tuve el mismo problema en Ubuntu 16.04: algunas claves se agregaron permanentemente, para otras tuve que ejecutarlas
ssh-add
en cada sesión. Descubrí que las claves que se agregaron permanentemente tenían claves privadas y públicas ubicadas~/.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 tanto la clave privada como la pública~/.ssh
antes de ejecutarlassh-add
.PD: Por lo que yo entiendo de Gnome wiki, mi método funciona gracias a la herramienta gnome-keyring, que forma parte del entorno de escritorio Gnome. Por lo tanto, mi método probablemente debería funcionar solo si usa Gnome o DE basado en Gnome.
fuente
Agregar las siguientes líneas en "~ / .bashrc" resolvió el problema para mí. Estoy usando Ubuntu 14.04 de escritorio.
fuente
En Ubuntu 14.04 (tal vez antes, tal vez aún) ni siquiera necesita la consola:
seahorse
o inicie lo que encuentre buscando "clave"ssh
recogerá la identidad (es decir, la clave) a través del agentessh
con-A
o hacer que el valor predeterminadofuente
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 cada vez.
Al comprobar la diferencia entre los dos, vi que mi clave personal tenía 400 derechos, mientras que la empresa 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 teclas.
fuente
Esto funcionó para mí.
fuente
muy simple ^ _ ^ dos pasos
1.yum instalar llavero
2.añada el siguiente código a .bash_profile
fuente
Para aquellos que usan Fish Shell, puede usar la siguiente función y luego llamarla
~/.config/fish/config.fish
o en un archivo de configuración separado~/.config/fish/conf.d/loadsshkeys.fish
. Cargará todas las claves que comienzan con id_rsa en elssh-agent
.Si desea que el
ssh-agent
auto se inicie cuando abra una terminal, puede usar tuvistavie / fish-ssh-agent para hacerlo.fuente