Question Entrez le mot de passe SSH une fois


Avant la mise à niveau

Quand je courais git clone git@... (en utilisant ssh) une fois par ordinateur, une fenêtre de dialogue contenant une zone de texte pour insérer ma phrase secrète SSH et confirmée avec OK est apparue. Ensuite, la phrase secrète n'était plus requise jusqu'au prochain démarrage de mon système.

Après la mise à niveau à 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éparer cela? Je veux entrer ma phrase secrète une seule fois.


105
2017-10-20 06:32


origine


Je pense que vous devez utiliser le ssh-add commande pour cela. L'as tu essayé? - devius
j'ai essayé ssh-agent bash + ssh-add. Cela ne fonctionne que pour quelques minutes. - Ionică Bizău
J'ai le même problème après tout. Je pense que cela peut être un conflit entre ssh-agent d'OpenSSH et le démon Gnome Keyring. - devius
Bug connexe: bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169 - devius
Ajouter AddKeysToAgent yes pour .ssh / config fonctionne pour moi. - xslittlegrass


Réponses:


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 corrigé cela 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 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 en utilisant $USER variable:

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


120
2017-10-20 06:41



Cela ne résout pas du tout le problème. Il ajoute uniquement l'identité à l'agent jusqu'à ce que vous sortiez du terminal. Si vous ouvrez un nouveau terminal, vous devez ssh-add encore. - devius
@devius Oui, semble être un bug. Mais, les commandes ci-dessus ont corrigé mon problème ... - Ionică Bizău
Donc, pour clarifier: avec ce "correctif", vous ne devrez plus saisir la phrase secrète dans ce terminal. Au moment où vous ouvrez un nouveau terminal, vous devrez redonner la phrase secrète. - harijay
j'ai essayé $ ssh-add /home/username/.ssh/id_rsa (sans pour autant ssh-agent bash) et cela a fonctionné pour moi même après la réouverture du terminal. Mais la solution complète pour moi était celle-ci stackoverflow.com/a/4246809/532252. Tout va bien, même après le redémarrage de la machine. - kishie
Je viens de taper ssh-add dans le terminal. Pas besoin de passer à ssh-agent bash ou de spécifier un fichier id_rsa - henry74


Ce document Atlassian corrigé le problème pour moi sur Ubuntu 14.04 Server Edition:

Ajoutez simplement ces valeurs dans votre .bashrc fichier:

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 vous demande un mot de passe une seule fois et il met en cache. Vous n'avez pas besoin de l'entrer à chaque fois.


27
2018-06-10 09:07



Cela semble fonctionner sur d'autres distributions, comme je viens d'utiliser cette réponse avec succès sur Sabayon Linux. - BH2017
Merci! Cette solution a fonctionné pour moi sur un système Ubuntu où le démon gnome-keyring ne fonctionnait pas à cause des problèmes de démon dbus. Plus précisément, j'obtenais ces erreurs "** Message: impossible de se connecter au bus de session dbus: impossible de lancer automatiquement un démon dbus sans $ DISPLAY pour X11" et après avoir défini la variable d'environnement d'affichage que j'ai obtenue ne se connecte pas au bus de session dbus: // bin / dbus-launch s'est terminé de manière anormale avec l'erreur suivante: Erreur de lancement automatique: l'initialisation de X11 a échoué. " - user207863
Cela nécessite plus de mises à jour, corrige le problème sur Ubuntu 16.04 virtualisé bien. - Niels Keurentjes
Cela corrige également le problème pour moi sur Bash for Windows. J'ai essayé de lancer Bash plusieurs fois et il s'est souvenu de la phrase secrète. Je n'ai pas encore essayé de redémarrer. - Amr
Après avoir essayé toutes les autres solutions, cela a fonctionné pour moi. Cela devrait être la solution à l'OP - João Pimentel Ferreira


0) réponse courte

Ajouter 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

Tout d'abord vérifiez que votre version de ssh, il doit être supérieur à 7,2:

ssh -V

2) Editer le fichier de configuration

Si c'est le cas, ajoutez simplement 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 exécutant:

eval $(ssh-agent)

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


23
2017-11-25 18:32



AddKeysToAgent yes est la réponse canonique post-2016 - et exactement ce que la plupart des utilisateurs modernes recherchent. C'est la mi-2017. Ubuntu> = 16.04 (Xenial Xerus) est maintenant une hypothèse raisonnable. La plupart des installations OpenSSH dans la nature prennent désormais en charge cette option. Les kludges de scripts shell ad-hoc préconisés par toutes les autres réponses à cette question sont donc ... passé. </sigh> - Cecil Curry


Une solution de contournement pour ce bug est d'ajouter ce qui suit au bas de ~/.bashrc

eval `gnome-keyring-daemon --start`

20
2018-02-28 20:52



Le porte-clés de gnome ne devrait-il pas faire partie de votre session? - Pavel Šimerda
Si vous parlez de "devrait", alors cette question ne devrait pas être ici à la première place, si tout est parfait - Anwar
Je ne sais pas si cela appartient à .bashrc. On dirait que vous devez l'ajouter dans un fichier de profil DE - Dmitry Ginzburg


Utilisateurs du coquille de poisson peut l'utiliser scénario 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
2017-09-07 11:53





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
2017-10-07 09:00





Si vous utilisez le fichier azure .ppk

Il suffit de le convertir en pem et d'ajouter la permission 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
2018-05-25 06:49