web-dev-qa-db-fra.com

Comment saisir la clé de passe ssh une fois pour toutes

J'ai mis en place une configuration sans mot de passe pour ssh qui utilise l'authentification par clé publique pour se connecter au serveur distant souhaité, tout fonctionne assez bien.

J'utilise une phrase secrète pour déverrouiller la clé privée, en utilisant cette solution - le problème est qu'il demande un mot de passe chaque fois que je démarre mon système.

J'ai trouvé que c'était gênant, je veux y entrer une fois pour toutes donc la prochaine fois que je démarrerai la session, je n'aurai pas à saisissez-le à nouveau, y a-t-il quelque chose comme une clé en cache qui contient ma phrase secrète et fonctionne pendant toute la session (survit également à un redémarrage)?

Serait-il possible de réaliser tout cela tout en conservant ma phrase secrète ssh?

1
Liso

Courir ssh-keygen -p. Cela vous permettra de supprimer le mot de passe défini sur la clé. Si aucune phrase de passe n'est définie, elle est stockée en texte clair et vous pouvez l'utiliser sans la déverrouiller:

$ ssh-keygen -p 
Enter file in which the key is (/home/user/.ssh/id_rsa): 
Enter old passphrase: 
Key has comment ''
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

Appuyez simplement sur Entrée lorsque vous êtes invité à saisir un mot de passe pour ne définir aucun mot de passe. Après cela, vous pouvez utiliser votre clé librement.

7
vidarlo

Vous souhaitez utiliser keychain.

Le programme keychain gère une instance du programme de cache de clés ssh-agent. Quand ssh-agent est démarré, deux variables d'environnement sont créées pour être évaluées. Normalement, lorsque le shell est fermé où ssh-agent a été démarré, ces variables d'environnement sont perdues. Le programme keychain assure le suivi de ces variables dans les connexions et fournit des scripts Shell dans le ~\.keychain répertoire.

Il existe plusieurs façons d'exécuter keychain, une méthode est manuellement à partir de la ligne de commande. Chaque fois que vous démarrez le Shell, utilisez:

eval `keychain --eval`

Cela trouvera ssh-agent s'il fonctionne, et démarrez-le s'il ne l'est pas. Dans les deux cas, utiliser eval sur keychain définira les variables d'environnement nécessaires où vous pourrez ajouter des clés en utilisant:

ssh-add <private-keyfile>

Si private-keyfile possède un mot de passe, vous serez invité à saisir ce mot de passe lors de l'exécution de ssh-add, mais tant que ssh-agent est en cours d'exécution. Ce sera la dernière fois que vous devrez saisir le mot de passe de la clé privée.

Parce que l’évaluation de keychain définit le SSH_AUTH_SOCK variable d'environnement, toute exécution de ssh utilisera le ssh-agent pour effectuer l'authentification.

Une autre suggestion consiste à ajouter l'exécution keychain à votre .bashrc fichier, comme suggéré dans cette réponse StackExchange .

Pour terminer keychain entrez simplement la commande:

keychain --stop mine

ou si vous souhaitez supprimer toutes les instances de ssh-agent, entrez la commande:

keychain --stop all

Juste une note, en utilisant des services tels que ssh-agent déjouer la sécurité des fichiers de clés privées avec mot de passe en stockant ces clés authentifiées en mémoire. Ce n'est pas sûr, surtout avec les attaques par canal latéral de mémoire. Si vous n'êtes pas intéressé par la sécurité des clés, la solution la plus simple consiste à supprimer le mot de passe sur la clé privée comme suggéré par @vidarlo.

5
John J.

La réponse simple est non.
Cela va à l'encontre de l'objectif (c'est-à-dire la protection) s'il est maintenu à travers les redémarrages.
Vous pouvez cependant le maintenir sur plusieurs sessions de connexion et même sur plusieurs terminaux.

  • Si vous souhaitez conserver les sessions de connexion mais que vous êtes autorisé à saisir le mot de passe une fois par terminal, ajoutez eval $(ssh-add) à .bash_profile

  • Si vous souhaitez le faire une fois par redémarrage du système, installez le trousseau, modifiez votre ~/.ssh/config fichier pour ajouter des clés au trousseau (AddKeysToAgent yes) et effectuez également l'étape ci-dessus.

1
xrplorer