Ingrese la frase de contraseña SSH una vez

105

Antes de la actualización

Cuando ejecutaba git clone [email protected] (usando ssh) una vez por computadora, se iniciaba un cuadro de diálogo que contenía un cuadro de texto para insertar mi frase de contraseña SSH y se confirmaba con OK. Entonces la frase de contraseña ya no era necesaria hasta el siguiente 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 se clona un repositorio de git aparece esto.

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

    
pregunta Ionică Bizău 20.10.2013 - 08:32

7 respuestas

120
  

Actualización: parece ser un error de 13.10:

     

enlace

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

Cómo corregir

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 solicitará la frase de contraseña una sola vez.

Y luego:

$ 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 username es tu nombre de usuario. Puedes hacer lo mismo usando $USER variable:

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

Alternativamente, simplemente use ~ para su directorio de inicio.

$ ssh-add ~/.ssh/id_rsa

Y el problema se solucionó.

    
respondido por el Ionică Bizău 20.10.2013 - 08:41
27

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

Simplemente agregue estos valores en su archivo .bashrc :

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, solo solicita una contraseña y se almacena en caché. No necesita ingresarlo cada vez.

    
respondido por el Arda 10.06.2015 - 11:07
23

0) Respuesta corta

Agregue su .ssh/config una lí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) Compruebe la versión de openssh

Primero compruebe 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 solo agregue su .ssh/config una línea al principio:

AddKeysToAgent yes

3) Compruebe si ssh-agent ya está abierto

Por lo general, las distribuciones cargan automáticamente un ssh-agent. Para verificarlo, 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 al agente solo en el terminal actual, por lo que para habilitarlo en cualquier lugar, puede intentar agregar esta línea en su archivo ~/.profile y reiniciar.

    
respondido por el tobiasBora 25.11.2016 - 19:32
20

Una solución para este error es agregar lo siguiente a la parte inferior de ~/.bashrc

eval 'gnome-keyring-daemon --start'
    
respondido por el Alex Collins 28.02.2014 - 21:52
3

Los usuarios del caparazón 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
    
respondido por el Daniel Gerber 07.09.2015 - 13:53
0

Uso esto:

vim ~/.profile

eval '/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg'
export SSH_AUTH_SOCK
export GPG_AGENT_INFO
    
respondido por el Carlos Silva 07.10.2015 - 11:00
0

Si usa el archivo azure .ppk

Simplemente conviértalo en pem y agrega el permiso 400 con pasos simples:

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 [email protected]<ip_address>
    
respondido por el GrvTyagi 25.05.2016 - 08:49

Lea otras preguntas en las etiquetas