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 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.
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:
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.
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:
Premièrement, vérifiez que votre version ssh, elle doit être supérieur de égal à 7.2 :
ssh -V
Si c'est le cas, ajoutez simplement dans votre .ssh/config
une ligne au début:
AddKeysToAgent yes
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.
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.
Une solution de contournement pour ce bogue consiste à ajouter ce qui suit au bas de ~/.bashrc
eval `gnome-keyring-daemon --start`
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
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>
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