Ingrese la frase de contraseña SSH una vez


124

Antes de actualizar

Cuando estaba ejecutando git clone git@...(usando ssh) una vez por computadora reiniciar, apareció un cuadro de diálogo de ventana que contenía un cuadro de texto para insertar mi frase de contraseña SSH y se confirmó con OK. Entonces la frase de contraseña ya no era necesaria hasta el próximo inicio de mi sistema.

Después de actualizar a 13.10

Después de actualizar a Ubuntu 13.10, esa ventana ya no aparece, pero aparece un mensaje en la terminal:

Enter passphrase for key '/home/username/.ssh/id_rsa': 

... cada vez que clona un repositorio git aparece esto.

¿Cómo puedo arreglar esto? Quiero ingresar mi frase de contraseña solo una vez.


1
Creo que tienes que usar el ssh-addcomando para eso. ¿Lo has probado?
devius

2
Intenté ssh-agent bash+ ssh-add. Eso funciona solo por unos minutos.
Ionică Bizău

Tengo el mismo problema después de todo. Creo que puede ser un conflicto entre el agente ssh de OpenSSH y el demonio de llavero Gnome.
devius


2
Agregar AddKeysToAgent yesa .ssh / config funciona para mí.
xslittlegrass

Respuestas:


138

Actualización: parece ser un error de 13.10:

https://bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169


De todos modos, ejecutando los siguientes comandos, el problema se solucionó para mí:

Como arreglar

Lo arreglé ingresando los siguientes comandos:

$ ssh-agent bash

Esto crea un nuevo proceso bash que le permite agregar claves privadas. Al agregar una nueva clave privada, se le pedirá la frase de contraseña una vez y solo una vez.

Y entonces:

$ ssh-add /home/username/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa: 
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

... donde usernameestá tu nombre de usuario. Puedes hacer lo mismo usando la $USERvariable:

$ ssh-add /home/$USER/.ssh/id_rsa

Alternativamente, solo use ~para su directorio de inicio.

$ ssh-add ~/.ssh/id_rsa

Y el problema fue solucionado.


48
Esto no resuelve el problema en absoluto. Solo agrega la identidad al agente hasta que salga del terminal. Si abre una nueva terminal, debe hacerlo ssh-addnuevamente.
devius el

@devius Sí, parece ser un error. Pero, los comandos anteriores solucionaron mi problema ...
Ionică Bizău

3
Por lo tanto, para aclarar: con esta "solución" solo no tendrá que volver a escribir la frase de contraseña en ese terminal. En el momento en que abra una nueva terminal, deberá volver a ingresar la frase de contraseña.
harijay

99
Lo intenté $ ssh-add /home/username/.ssh/id_rsa(sin ssh-agent bash) y funcionó para mí incluso después de volver a abrir la terminal. Pero la solución completa para mí fue esta stackoverflow.com/a/4246809/532252 . Todo está bien incluso después de reiniciar la máquina.
kishie

1
Acabo de escribir ssh-add en la terminal. No es necesario cambiar a ssh-agent bash o especificar un archivo
id_rsa

39

0) respuesta corta

Agregue su .ssh/configlínea al principio:

AddKeysToAgent yes

y ejecute git / ssh / ... Si no es suficiente, verifique su versión de ssh y verifique que ssh-agent esté cargado con estas instrucciones:

1) Verifique la versión openssh

Primero verifique que su versión ssh, debe ser mayor de igual a 7.2 :

ssh -V

2) Edite el archivo de configuración

Si es el caso, simplemente agregue su .ssh/configlínea al principio:

AddKeysToAgent yes

3) Verifique si ssh-agent ya está abierto

Por lo general, las distribuciones cargan automáticamente un agente ssh. Para comprobarlo, ejecuta

ps aux | grep -v grep | grep ssh-agent

Si no ve ninguna línea que lo contenga, debe cargarlo ejecutando:

eval $(ssh-agent)

Tenga en cuenta que esto habilita el agente solo en el terminal actual, por lo que para habilitarlo en todas partes, puede intentar agregar esta línea en su ~/.profilearchivo y reiniciar.


11
AddKeysToAgent yeses la respuesta canónica posterior a 2016, y es exactamente lo que buscan la mayoría de los usuarios modernos. Es a mediados de 2017. Ubuntu> = 16.04 ( Xenial Xerus ) ahora es una suposición razonable. La mayoría de las instalaciones de OpenSSH en la naturaleza ahora admiten esta opción. Los comentarios de script de shell ad-hoc del tipo recomendado por cualquier otra respuesta a esta pregunta son tan ... pasados ​​de moda . </sigh>
Cecil Curry

2
Esta debería ser la respuesta aceptada
simernes

32

Este documento de Atlassian me solucionó el problema en Ubuntu 14.04 Server Edition:

Simplemente agregue estos valores a su .bashrcarchivo:

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

Y después de iniciar sesión, solicita la contraseña solo una vez y se almacena en caché. No necesita ingresarlo cada vez.


2
Esto parece funcionar en otras distribuciones, como si acabara de usar esta respuesta en Sabayon Linux.
BH2017

1
¡Gracias! Esta solución funcionó para mí en un sistema ubuntu donde el gnome-keyring-daemon no funcionó debido a problemas con dbus-daemon. Específicamente, recibí estos errores "** Mensaje: no se pudo conectar al bus de sesión dbus: No se pudo iniciar automáticamente un dbus-daemon sin $ DISPLAY para X11" y después de configurar la variable de entorno de visualización recibí "** Mensaje: no se pudo no se conecte al bus de sesión dbus: // bin / dbus-launch finalizó de forma anormal con el siguiente error: Error de inicio automático: error de inicialización X11 ".
user207863

1
Esto necesita más votos a favor, soluciona el problema en Ubuntu 16.04 virtualizado bien.
Niels Keurentjes

3
Esto soluciona el problema para mí en Bash para Windows también. Intenté lanzar Bash varias veces y recordó la frase de contraseña. No he intentado reiniciar todavía.
Amr

2
Después de probar todas las otras soluciones, esto funcionó para mí. Esta debería ser la solución para el OP
João Pimentel Ferreira

20

Una solución para este error es agregar lo siguiente al final de~/.bashrc

eval `gnome-keyring-daemon --start`

2
¿No debería ser el llavero de gnomo parte de tu sesión?
Pavel Šimerda

1
Si está hablando de 'debería', entonces esta pregunta no debería estar aquí en primer lugar, si todo es así de perfecto
Anwar

1
No estoy seguro si esto pertenece .bashrc. Parece que tiene que agregarlo en algún archivo de perfil DE
Dmitry Ginzburg

3

Los usuarios de la concha de pescado pueden usar este script para hacer lo mismo.

# content has to be in .config/fish/config.fish
# if it does not exist, create the file
setenv SSH_ENV $HOME/.ssh/environment

function start_agent                                                                                                                                                                    
    echo "Initializing new SSH agent ..."
    ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
    echo "succeeded"
    chmod 600 $SSH_ENV 
    . $SSH_ENV > /dev/null
    ssh-add
end

function test_identities                                                                                                                                                                
    ssh-add -l | grep "The agent has no identities" > /dev/null
    if [ $status -eq 0 ]
        ssh-add
        if [ $status -eq 2 ]
            start_agent
        end
    end
end

if [ -n "$SSH_AGENT_PID" ] 
    ps -ef | grep $SSH_AGENT_PID | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    end  
else
    if [ -f $SSH_ENV ]
        . $SSH_ENV > /dev/null
    end  
    ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    else 
        start_agent
    end  
end

0

Yo uso esto:

vim ~/.profile

eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg`
export SSH_AUTH_SOCK
export GPG_AGENT_INFO

0

Si usa el archivo azure .ppk

Simplemente conviértalo a pem y agregue el permiso 400 con simples pasos:

sudo apt-get install putty
puttygen <path_to_key>/keyname.ppk -O private-openssh -o <path>/aws_key.pem
sudo chmod 400 <path>/aws_key.pem
ssh -vi aws_key.pem ubuntu@<ip_address>

0

En Ubuntu 18.04, el agente ssh se inicia cuando se abre la sesión X, se administra en el archivo /etc/X11/Xsession.options:

# cat /etc/X11/Xsession.options
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $
#
# configuration options for /etc/X11/Xsession
# See Xsession.options(5) for an explanation of the available options.
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
use-session-dbus
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.