web-dev-qa-db-fra.com

Entrez une fois le mot de passe SSH

Avant la mise à niveau

Lorsque j’exécutais git clone git@... (en utilisant ssh) une fois par ordinateur, une fenêtre de dialogue apparaît contenant une zone de texte pour l’insertion de ma phrase secrète SSH et confirmée par OK. Ensuite, la phrase secrète n'était plus nécessaire jusqu'au prochain démarrage de mon système.

Après la mise à niveau vers 13.10

Après la mise à niveau vers Ubuntu 13.10, cette fenêtre n'apparaît plus, mais un message apparaît dans le terminal:

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

... chaque fois que vous clonez un référentiel git, cela apparaît.

Comment puis-je réparer cela? Je souhaite entrer ma phrase secrète une seule fois.

117
Ionică Bizău

Mise à jour: semble être un bug de 13.10:

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


Quoi qu'il en soit en exécutant les commandes suivantes, le problème a été résolu pour moi:

Comment réparer

J'ai résolu ce problème en entrant les commandes suivantes:

$ ssh-agent bash

Cela crée un nouveau processus bash qui vous permet d'ajouter des clés privées. Lors de l'ajout d'une nouvelle clé privée, vous serez invité à entrer la phrase secrète une fois et une seule fois.

Et alors:

$ 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)

... où username est votre nom d'utilisateur. Vous pouvez faire la même chose avec la variable $USER:

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

Sinon, utilisez simplement ~ pour votre répertoire personnel.

$ ssh-add ~/.ssh/id_rsa

Et le problème a été résolu.

131
Ionică Bizău

0) réponse courte

Ajoutez dans votre .ssh/config une ligne au début:

AddKeysToAgent yes

et lancez git/ssh/... Si cela ne suffit pas, vérifiez votre version de ssh et vérifiez que ssh-agent est chargé avec ces instructions:

1) Vérifiez la version openssh

Premièrement, vérifiez que votre version ssh, elle doit être supérieur de égal à 7.2 :

ssh -V

2) Editez le fichier de configuration

Si c'est le cas, ajoutez simplement dans votre .ssh/config une ligne au début:

AddKeysToAgent yes

3) Vérifiez si ssh-agent est déjà ouvert

Habituellement, les distributions chargent automatiquement un agent ssh. Pour le vérifier, lancez

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

Si vous ne voyez aucune ligne le contenant, vous devez le charger en lançant:

eval $(ssh-agent)

Notez que cela active l'agent uniquement sur le terminal actuel. Pour l'activer partout, vous pouvez essayer d'ajouter cette ligne dans votre fichier ~/.profile et de redémarrer.

30
tobiasBora

Ce document Atlassian résolu le problème sur Ubuntu 14.04 Server Edition:

Ajoutez simplement ces valeurs dans votre fichier .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

Et après s'être connecté, il demande un mot de passe une seule fois et se met en cache. Vous n'avez pas besoin de le saisir à chaque fois.

30
Arda

Une solution de contournement pour ce bogue consiste à ajouter ce qui suit au bas de ~/.bashrc

eval `gnome-keyring-daemon --start`
20
Alex Collins

Les utilisateurs du poisson peuvent utiliser ce script pour faire la même chose.

# 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
3
Daniel Gerber

Si vous utilisez un fichier Azure .ppk

Convertissez-le simplement en pem et ajoutez l'autorisation 400 en quelques étapes 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 ubuntu@<ip_address>
0
GrvTyagi

J'utilise ceci:

vim ~/.profile

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