Entrez la phrase secrète SSH une fois

102

Avant la mise à niveau

Lorsque j'exécutais git clone git@... (en utilisant ssh) une fois par redémarrage de l'ordinateur, une boîte de dialogue contenant une zone de texte permettant d'insérer ma phrase secrète SSH et confirmée par OK apparaît. Ensuite, la phrase secrète n'était plus requise 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 dans le terminal apparaît:

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

... chaque fois que vous clonez un dépôt git, cela apparaît.

Comment puis-je résoudre ce problème? Je souhaite entrer ma phrase secrète une seule fois.

    
posée Ionică Bizău 20.10.2013 - 08:32
la source

7 réponses

117
  

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

     

lien

Quoi qu’il en soit, exécutez 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. Lorsque vous ajoutez une nouvelle clé privée, vous serez invité à saisir la phrase secrète une seule fois.

Et puis:

$ 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 en utilisant la variable $USER :

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

Vous pouvez également utiliser ~ pour votre répertoire personnel.

$ ssh-add ~/.ssh/id_rsa

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

    
réponse donnée Ionică Bizău 20.10.2013 - 08:41
la source
27

Ce document Atlassian a résolu le problème pour moi 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 vous être connecté, il demande un mot de passe une seule fois et il met en cache. Vous n'avez pas besoin de l'entrer à chaque fois.

    
réponse donnée Arda 10.06.2015 - 11:07
la source
22

0) Réponse courte

Ajoutez votre ligne .ssh/config one 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

Tout d’abord, vérifiez que votre version de ssh, elle doit être supérieure à 7.2 :

ssh -V

2) Editez le fichier de configuration

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

AddKeysToAgent yes

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

En général, 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 exécutant:

eval $(ssh-agent)

Notez que cela n'active l'agent que sur le terminal en cours, donc pour l'activer partout, vous pouvez essayer d'ajouter cette ligne dans votre fichier ~/.profile et redémarrer.

    
réponse donnée tobiasBora 25.11.2016 - 19:32
la source
20

Une solution de contournement pour ce bogue consiste à ajouter les éléments suivants au bas de la page. de ~/.bashrc

eval 'gnome-keyring-daemon --start'
    
réponse donnée Alex Collins 28.02.2014 - 21:52
la source
3

Les utilisateurs du shell de poisson peuvent utiliser cette 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
    
réponse donnée Daniel Gerber 07.09.2015 - 13:53
la source
0

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
    
réponse donnée Carlos Silva 07.10.2015 - 11:00
la source
0

Si vous utilisez le fichier azure .ppk

Il suffit de le convertir en pem et d'ajouter une 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>
    
réponse donnée GrvTyagi 25.05.2016 - 08:49
la source

Lire d'autres questions sur les étiquettes