Comment éviter de taper ssh-add à chaque fois

11

J'ai lu et suivi de la documentation en ligne sur la façon de configurer un agent ssh afin de ne pas avoir à taper de mot de passe chaque fois que je ssh vers une machine distante.

Cependant, avec l'aide de ssh-agent , je dois encore le faire à ssh-addchaque redémarrage du shell. Le ssh-addme demande ensuite d'entrer la phrase secrète pour déverrouiller la clé privée.

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

Au lieu de taper mon mot de passe pour la machine distante, on me demande de taper le mot de passe de la clé privée. C'est comme sortir d'un purgatoire et me retrouver dans un enfer après. Il semble que l'id_rsa ne soit ajouté que temporairement à l'agent ssh dans une session , car chaque fois que je me connecte et que je tape ssh-add -l. Je reçois:

The agent has no identities.

Puis-je demander comment stocker définitivement la clé (id_rsa) dans ssh-agent? Merci

EDIT: c'est ce que j'ai fait avec ssh-agent. J'ai ajouté le bloc suivant dans~/.bash_profile

SSHAGENT=/usr/bin/ssh-agent                                                                                        
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "SSHAGENT" ]; then
  eval `$SSHAGENT $SSHAGENTARGS`
  trap "kill $SSH_AGENT_PID" 0
fi
ssgao
la source
Voulez-vous dire que vous devez saisir votre phrase secrète chaque fois que vous vous connectez, ou chaque fois que vous ouvrez une fenêtre shell? Vous dites que vous avez suivi une documentation en ligne, mais ssh-agent fonctionne par défaut sur Ubuntu, donc vous ne devriez rien avoir à faire. Qu'est-ce que tu as fait exactement?
Gilles 'SO- arrête d'être méchant'
Je dois taper une phrase secrète chaque fois que je ssh dans la machine distante. MAIS ce n'est pas la phrase de passe pour accéder à la machine distante, c'est la phrase de passe pour déverrouiller ma clé privée (id_rsa).
ssgao
Je sais que c'est le mot de passe de votre clé. Ce que je demande, c'est ce que vous avez fait pour configurer ssh-agent, et si l'exécution ssh-adda un effet qui dure plus longtemps que la fenêtre shell que vous avez tapée.
Gilles 'SO- arrêtez d'être mauvais'
L'effet dure jusqu'à ce que je me déconnecte du système (local). J'ai mis ce que j'ai fait ssh-agentdans le post.
ssgao
Cela ressemble à un comportement normal: vous devez saisir votre phrase secrète une fois par session pour déverrouiller la clé. Si la clé déverrouillée était stockée quelque part, cela irait à l'encontre du but d'avoir une phrase secrète sur la clé - toute personne obtenant la clé déverrouillée stockée pourrait l'utiliser. Vous attendiez-vous à autre chose? Voulez-vous que la clé soit stockée en mémoire après votre déconnexion afin qu'elle soit disponible jusqu'au prochain redémarrage?
Gilles 'SO- arrête d'être méchant'

Réponses:

6

J'ai installé le trousseau.

sudo apt-get install trousseau

Si vous exécutez bash, vous devez ajouter quelques commandes à votre .bash_profile. Si vous n'en avez pas, créez-en une dans votre dossier personnel. Ajoutez ces lignes:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

Au début d'une journée de travail, je me connecterai. Lorsque j'ouvre un terminal, je serai invité une fois à saisir ma phrase secrète. Pour tous les autres nouveaux terminaux et connexions, on ne me demandera plus ma phrase secrète.

walpha
la source
4
en quoi est-ce différent de taper ssh-adddans le terminal?
ssgao
ya mais alors vous devrez taper ssh-add à chaque fois ... cela fera couper vos 2 étapes -> eval "$ (ssh-agent)" et ssh-add
abhishek
1

Ce que vous recherchez est moins sûr, mais il peut être accompli en utilisant l'authentification par clé publique sans avoir besoin de ssh-agent. Une option plus sécurisée consiste à utiliser l'authentification par clé publique avec une phrase secrète tout en désactivant l'authentification par mot de passe sur le serveur ssh, mais ce n'est pas ce que vous avez demandé. Consultez le lien au bas de cette réponse pour obtenir des instructions si vous décidez de le faire à la place.

Pour utiliser ssh sans qu'on vous demande de phrase secrète, vous devez générer votre paire de clés tout en laissant le champ de phrase secrète vide.

Pour vérifier si vous avez déjà généré une paire de clés, recherchez les fichiers id_rsa et id_rsa.pub dans votre répertoire ~ / .ssh. S'ils sont déjà là, vous pouvez les supprimer ou les déplacer pour créer une nouvelle paire de clés.

Notez que si vous les supprimez, vous perdrez l'accès aux serveurs ssh que vous utilisez, puis aux anciennes clés pour vous authentifier si l'authentification par mot de passe est désactivée sur le serveur.

Pour créer une nouvelle paire de clés, exécutez la commande suivante:

ssh-keygen -t rsa

Acceptez l'emplacement par défaut des clés et laissez la phrase secrète vide.

Pour donner votre clé publique au serveur ssh auquel vous souhaitez vous connecter, utilisez la commande suivante:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost

Après avoir terminé ces étapes, vous pourrez vous connecter au serveur distant sans mot de passe de l'ordinateur que vous utilisez.

Référence: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/

Omegamormegil
la source
0

Il y a quelque temps, j'ai soudainement commencé à me demander une phrase secrète pour déverrouiller ma clé ssh lors de la procédure git push. Il s'est avéré que pour ne plus être invité à saisir une phrase secrète, il suffisait d'ajouter SSH Key Agent (GNOME Keyring: SSH Agent) aux applications de démarrage (dans mon cas - juste pour cocher la case):

entrez la description de l'image ici

Alexey
la source
Pourriez-vous développer votre réponse avec plus de détails sur la façon de procéder et pourquoi cela résoudrait le problème en question? Merci.
Byte Commander