104 votes

comment éviter de se voir demander "Enter passphrase for key " lorsque je fais une opération ssh sur un hôte distant ?

Je me connecte par ssh à un hôte distant (linux, fedora) et je veux y effectuer des opérations par ssh (git avec bitbucket). Il y a ssh-agent qui tourne sur cette machine,

$ ps -e|grep sh-agent
 2203 ?        00:00:00 ssh-agent

mais quand je veux git, il me demande de saisir la phrase de passe

$ git pull
Enter passphrase for key '/user/wgong/home/.ssh/id_rsa': 

Note : si j'opère localement sur cette machine, il ne me demandera pas d'entrer la phrase de passe.

165voto

Roman Points 1761

A mon avis, la meilleure façon d'utiliser ssh

Avant d'utiliser Git, ajoutez votre clé à ssh-agent

Début ssh-agent si elle n'a pas démarré :

$ eval `ssh-agent -s`

Ajoutez votre clé privée en utilisant ssh-add

$ ssh-add ~/.ssh/id_rsa_key  
Enter passphrase for /home/user/.ssh/id_rsa_key:  
Identity added: /home/user/.ssh/id_rsa_key   
(/home/user/.ssh/id_rsa_key)  

Vérifiez si la clé est ajoutée (le paramètre est un L minuscule) :

$ ssh-add -l  
2048 55:96:1a:b1:31:f6:f0:6f:d8:a7:49:1a:e5:4c:94:6f  
/home/user/.ssh/id_rsa_key (RSA)

Essayez de vous connecter à votre serveur Git :

$ ssh git.example.com

Vous pouvez désormais utiliser Git sans avoir à demander de phrase de passe supplémentaire.

Autres moyens

https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-password-prompt

36voto

ams Points 1087

Si vous avez déjà ssh-agent en cours d'exécution, vous pouvez ajouter la clé, et vous devrez entrer la phrase de passe une fois, et une seule fois pour cette session.

ssh-add ~/.ssh/id_rsa

Vous ne dites pas quel système d'exploitation vous utilisez, mais s'il s'agit de Linux et de Gnome, alors l'application "Passwords and Keys" (nom de la CLI) : seahorse ) peut les gérer de manière à ce qu'ils soient déverrouillés lorsque vous vous connectez (aucune phrase de passe requise). D'autres environnements de bureau Linux ont leurs propres gestionnaires. Je ne suis pas sûr de ce que les autres systèmes d'exploitation font ici.

23voto

Justin Samuel Points 331

Vous pouvez facilement supprimer la phrase de passe de votre clé en utilisant la commande suivante

ssh-keygen -p

À la première invite, saisissez le chemin du fichier (ou appuyez sur Entrée pour utiliser la valeur par défaut)
Deuxième demande, entrez l'ancienne phrase de passe.
Au prochain message, appuyez sur la touche Entrée pour annuler la phrase de passe.

On dirait que c'est le moyen le plus facile !

5voto

kenorb Points 22006

La principale raison de demander une phrase de passe est que votre clé est cryptée, comparez ces deux-là :

  • non crypté

    $ head ~/.ssh/id_rsa 
    -----BEGIN RSA PRIVATE KEY-----            
    AIIAogIBAAKCAQEAtOJQ0Z3ZbyzuknnHqn5oMCmNf8zGmERhW+g5Eftf9daZ5qvZ
  • crypté

    $ head ~/.ssh/id_rsa 
    -----BEGIN RSA PRIVATE KEY-----    
    Proc-Type: 4,ENCRYPTED
    DEK-Info: AES-128-CBC,A95215C9E9FE00B8D73C58BE005DAD82
    
    ZAzLq/LbHSfOVkXtQz6M6U8yuAx2lIu9bH/k7ksgat92IDjZntRrT1XMpkYtjB+0

Vous devez donc faire l'une des choses suivantes :

  1. Si c'est crypté, vous pouvez essayer d'enlever le cryptage .
  2. Vous utilisez la mauvaise clé. Si vous souhaitez utiliser une clé différente, spécifiez un autre fichier ou modifiez votre fichier ~/.ssh/config et spécifier un fichier d'identité différent ( IdentityFile ).
  3. Exécuter ssh-add -l pour lister toutes vos identités (puis comparer avec votre local) et vérifier avec Stash si vous utilisez les bonnes clés (elles existent dans la configuration de Stash).
  4. Si vous connaissez la phrase de passe et que vous voulez l'automatiser, essayez la solution suivante :

    PS="my_passphrase"
    install -vm700 <(echo "echo $PS") $PWD/my_pass
    DISPLAY= SSH_ASKPASS=$PWD/my_pass ssh-add - && rm -v my_pass

Dépannage :

  1. Vérifiez que votre agent SSH fonctionne ( eval "$(ssh-agent -s)" ).
  2. Réexécutez git via : GIT_TRACE=1 git pull ou avec GIT_SSH_COMMAND="ssh -vv" (Git 2.3.0+) pour déboguer à nouveau votre commande.
  3. Vous pouvez essayer d'éviter de demander la phrase de passe (ce qui la redirigera vers l'adresse suivante true ), mais je ne pense pas que ça va aider. S'il le demande, il y a une raison à cela et c'est pratiquement obligatoire.

    DISPLAY= SSH_ASKPASS=/bin/true ssh-add

4voto

Thomas Dickey Points 8167

Le site ssh-add lance un programme de agent qui peut contenir (et fournir) votre phrase de passe. La façon de l'utiliser à distance est dans un fichier parent de votre Shell interactif (pour que l'agent ne s'arrête pas).

Voici quelques questions connexes :

Maintenant... connexion à distance En règle générale, votre commande ne se connecte pas en tant que telle et ne démarre donc pas. ssh-add . Vous pouvez contourner ce problème en exécutant un script qui

  • commence ssh-agent
  • commence ssh-add
  • ajoute votre clé
  • exécute la commande que vous voulez.

Le point faible est la deuxième étape : vous voudriez toujours vous serez invité à saisir la phrase de passe, sauf si vous affaiblir votre sécurité en utilisant une clé qui n'a pas de phrase de passe. . Certaines personnes le font, la plupart le déconseillent.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X