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.