web-dev-qa-db-fra.com

Comment enregistrer de manière permanente une clé SSH protégée par mot de passe?

J'utilise Awesome Window Manager

Comment puis-je ajouter de manière permanente des clés privées avec mot de passe?

Inspiré par la réponse ici J'ai ajouté les clés privées dans ~/.ssh/config

Contenu de ~/.ssh/config:

IdentityFile 'private key full path'

Autorisations de ~/.ssh/config: 0700

Mais ça ne marche pas pour moi.

Si j'ajoute manuellement la clé à chaque session, cela fonctionne mais je cherche une manière plus élégante (pas en .bashrc)

EDIT:

  • Utilisation de Gnome version classique (sans effets).

Après avoir ajouté la clé SSH avec ssh-copy-if à l'hôte distant, l'invite suivante s'affiche dans le terminal (terminal GNOME 3.0.1) lorsque je me connecte :

ssh -i .ssh/Password-Protected-Key user@Host
Enter passphrase for key '.ssh/Password-Protected-Key':
  • Utilisation de Awesome gestionnaire de fenêtres v3.4.10. J'avais déjà gnome-keyring-dameon alors j'ai tué l'autre pid et lancé gnome-keyring-daemon --start | grep SOCK (je l'ai aussi ajouté dans .profile) la sortie (grep):

SSH_AUTH_SOCK=/tmp/keyring-2LXXXX/ssh

J'ai suivi exactement les mêmes étapes et de même, je n'ai pas de dialogue de l'interface graphique ssh-add.

EDIT 2 :

J'ai créé une nouvelle clé protégée par mot de passe à partir de la machine virtuelle Ubuntu 11.10 sur l'unité et je ne peux toujours pas obtenir d'invite de mot de passe.

EDIT 3 : Il semble que cela ne puisse pas fonctionner dans le gestionnaire de fenêtres Awesome :( et éventuellement d'autres ..

9
pl1nk

Si vous utilisez Unity ou un gestionnaire de session qui lance gnome-keyring-daemon, vous pouvez simplement utiliser Seahorse (mots de passe et clés) pour établir une clé, définir son utilité, définir une phrase secrète et distribuer sa clé publique au ordinateur que vous allez utiliser avec ssh. Aucune commande de terminal n'est nécessaire.

Vous créez le mot de passe par:

  1. en sélectionnant Fichier-> Nouveau et en sélectionnant Secure Shell Key. Appuyez sur Continuer.

  2. Tapez un nom descriptif et sélectionnez Create and set up.

  3. Vous serez invité à saisir une phrase clé deux fois (la deuxième fois pour vérifier que vous ne l'avez pas mal saisie la première fois.

  4. Entrez l'ordinateur sur lequel la clé publique doit être utilisée et le nom d'utilisateur sur cet ordinateur pour lequel vous utiliserez la clé. La clé publique sera copiée sur cet autre ordinateur, en demandant votre mot de passe sur cet ordinateur si nécessaire.

Maintenant, l'onglet My Personal Keys affichera la clé.

En supposant que gnome-keyring-daemon ait été démarré correctement lorsque vous vous êtes connecté à Lightdm, et à nouveau par votre gestionnaire de session, lorsque vous utilisez la clé pour la première fois avec ssh, vous serez invité à entrer la phrase clé. Dans cette boîte de dialogue, vous pouvez fournir la phrase clé, sélectionner le contrôle Details et demander à ce que le trousseau de clés soit déverrouillé chaque fois que vous êtes connecté - en fournissant automatiquement cette clé. presse OK

Il se peut que vous ne soyez pas invité de cette manière si une autre clé est disponible pour vous connecter à l'ordinateur distant.

Une fois cette opération accomplie, le premier onglet Seahorse Passwords listera une "entrée de mot de passe de déverrouillage" pour le nom de la clé. Cliquez sur le triangle avant "Mots de passe: Connexion" pour le voir.

2
John S Gruber

Rendre une clé SSH protégée par mot de passe persistante pendant les sessions et les redémarrages

C’est probablement ce que vous voulez: entrer une fois la phrase secrète de la clé la rend disponible à tout moment chaque fois que vous êtes connecté. Cela fonctionnera pour la plupart des utilisateurs qui utilisent les ordinateurs de bureau Unity ou Gnome.

  • Lorsque vous vous connectez après avoir ajouté la clé publique au serveur distant, vous obtenez la boîte de dialogue de l'interface graphique ssh-add:

    enter image description here

  • Développez les "Détails" en cliquant sur le triangle et vous obtiendrez le ci-dessous. La valeur par défaut est "verrouiller le trousseau de clés lorsque je me déconnecte", ce qui vous oblige à saisir le mot de passe une fois par session:

    enter image description here

  • Changez-le en Déverrouillez automatiquement ... chaque fois que je suis connecté , ce qui signifie que cela fonctionnera chaque fois que vous serez connecté à votre session - c'est " contrôlé "par votre mot de passe utilisateur. Il persistera après les redémarrages.

    enter image description here

  • Entrez une fois le mot de passe clé de la clé et le tour est joué: la clé est authentifiée via la première connexion réussie à votre environnement de bureau.


Si vous utilisez AwesomeWM

Testé avec une nouvelle installation d'AwesomeWM dans un nouvel ID utilisateur

  • Par défaut, AwesomeWM utilise ssh-agent:

     $ export | grep SSH 
     déclarer -x SSH_AGENT_PID = "5479" 
     déclarer -x SSH_AUTH_SOCK = "/ tmp/ssh-fWCKNnPq5440/agent.5440" 
    
  • Pour que les étapes ci-dessus fonctionnent, vous devez utiliser gnome-keyring-daemon en tant que démon d'authentification SSH, et non pas ssh-agent. Lorsque vous vous connectez à l'aide de lightdm, PAM lance gnome-keyring-daemon qui tente de déverrouiller une clé de connexion avec votre mot de passe de déverrouillage, mais vous devez ajouter à votre configuration pour la maintenir en fonctionnement et l'utiliser.

  • Ajoutez ce qui suit à la fin de votre ~/.xprofile:

     #!/bin/bash 
     eval $ (gnome-keyring-daemon --start) 
     export SSH_AUTH_SOCK 
     export GNOME_KEYRING_PID 
     export GNOME_KEYRING_CONTROL .____.]

Les commandes du fichier ~/.xprofile seront exécutées par xsession avant de démarrer le gestionnaire de fenêtres awesome et seront liées au processus gnome-keyring-daemon --login lancé par PAM via l'environnement ci-dessus. variables.

  • Déconnectez-vous de nouveau dans lightdm et reconnectez-vous. Désormais, lorsque vous définissez ssh user@Host, vous devriez obtenir les fenêtres contextuelles ci-dessus. Utilisez-les pour décoder vos clés privées dans ~/.ssh/et sauvegardez-les dans le trousseau de clés de connexion gnome-keyring.

La solution générale pour tout environnement de gestionnaire de fenêtres/bureau

  • est d'utiliser gnome-keyring-daemon au lieu de ssh-agent. Pour cela, vous devez exécuter gnome-keyring-daemonet l'initialiser et faites-le après le démarrage de ssh-agent ou ne démarrez pas du tout ssh-agent.

  • ssh (en réalité ssh-add) décide quel agent d'authentification à appeler en fonction de la valeur de la variable d'environnement SSH_AUTH_SOCK, qui peut être vérifiée en tapant export | grep SOCK

  • ceci est de la forme SSH_AUTH_SOCK=/tmp/ssh-MMFyVlI22130/agent.22130 pour ssh-agent (PAS ce que vous voulez pouvoir sauvegarder votre clé)

  • mais de la forme SSH_AUTH_SOCK="/tmp/keyring-mEQB5g/ssh" pour gnome-keyring-daemon que vous voulez)

  • alors vérifiez la valeur et vérifiez avec ps aux | grep keyring que gnome-keyring-daemon est en cours d'exécution et, si c'est le cas, initialisez-le avec les résultats de gnome-keyring-daemon --start

  • vous pouvez ensuite vérifier les identités enregistrées associées dans la console en tapant ssh-add -l - si "aucun agent" ne s'affiche, vous avez alors commis une erreur en configurant gnome-keyring-daemon.

19
ish

La solution à votre problème consiste à utiliser l'agent ssh. Il vous suffit de déverrouiller le mot de passe de votre clé une fois, après quoi il est conservé en mémoire par l'agent et utilisé automatiquement.

  • Générer une paire de clés privée/publique avec ssh-keygen -t dsa
  • Copiez la clé publique sur la machine distante, généralement ~/.ssh/registered_keys (utilisez ssh-copy-id pour cela).
  • Exécutez ssh-add avant de vous connecter au système distant, cela vous demandera votre phrase secrète et le stockera
  • Connexion au système distant, aucun mot de passe nécessaire

ssh-agent est bien décrit sur le .net, par exemple ici:

Un autre avantage de ssh-agent est que si vous vous connectez au système distant avec ssh -A [email protected], vous pouvez continuer à utiliser ssh de l’ordinateur domain.name vers un troisième ordinateur contenant votre clé publique sans que chaque clé privée ne soit copiée sur l’ordinateur domain.name (et ce ne voit jamais votre clé privée, seulement le défi/la réponse unique).

2
Floyd