Il y a quelque temps, sur StackOverflow, j'ai posé cette question sur ssh-agent et crontab . J'ai maintenant une question similaire sur ssh-agent et screen sur les systèmes Linux.
Donc, sur mon Mac, ssh-agent se lance au démarrage du système, il est donc toujours à ma disposition. Je pense que ce serait vrai sous mon linux (redhat el5 / fedora) si j'utilisais X-Windows. Cependant, il s'agit d'une machine serveur distante et je me connecte toujours via ssh.
J'adorerais que les clés ssh soient correctement configurées, je n'ai donc pas eu à saisir mon mot de passe plusieurs fois lors d'une mise à jour ou d'un commit svn. Je suis heureux de taper ma phrase secrète une fois par session et je décourage notre équipe d'avoir des clés ssh sans mot de passe.
Pendant un bref instant, il semblait que faire "eval` ssh-agent -s` "dans mon .bash_profile, associé à une commande pour tuer l'agent ssh lorsque je me déconnectais, fonctionnerait. Cependant, nous utilisons beaucoup l' écran pour gérer des programmes interactifs de longue durée et des environnements de développement. Si vous démarrez et arrêtez ssh-agent comme je viens de le décrire, alors il est tué lorsque vous quittez le terminal, et les sous-sessions de l'écran qui faisaient référence à cette instance de ssh-agent sont abandonnées.
Alors ... comment puis-je être un utilisateur de console, qui utilise l'écran, qui utilise un mot de passe avec ses clés ssh, qui n'a pas à taper constamment la phrase secrète?
la source
/etc/conf.d/local
(ou votre équivalent) pour chaque utilisateur qui utilise l'agent, pour lancer unssh-agent
processus distinct par utilisateur. Si, comme vous le dites, vous n'avez pas un grand nombre d'utilisateurs, ce ne serait pas trop mal. Vous soulevez un bon point (que j'ai oublié de prendre en compte) au sujet des sessions de terminal attachées à l'agent; voir ma modification de la réponse.Découvrez le trousseau . Il fait tout ce qui précède. Regardez en particulier les options
--clear
et--timeout
.la source
Une meilleure approche consiste à utiliser le transfert d'agent ssh (
-A
option). Cela permet à la personne utilisant ssh d'utiliser les clés de l'agent ssh s'exécutant sur la machine d'où ils viennent, probablement le poste de travail sur lequel ils sont réellement assis.la source
pour suivre le transfert de l'agent ssh, vous constaterez que par défaut, les informations d'identification ssh transférées ne seront pas disponibles pour votre session d'écran une fois que vous vous déconnectez, reconnectez-vous et reconnectez-vous à votre session.
Vous pouvez contourner cela, cependant, en configurant screen la variable d'environnement SSH_AUTH_SOCK sur quelque chose de bien connu, et en mettant cet emplacement connu à jour sur votre socket d'authentification actuel.
J'utilise cette fonction shell pour rentrer dans l'écran et réparer la chaussette ssh auth:
et je l'ai dans mon .screenrc:
J'espère que cela t'aides.
la source
Si je vous ai bien compris, vous voulez juste une session d'écran, que vous détachez et rattachez parfois mais ne voulez plus jamais ressaisir les mots de passe pour l'agent ssh (votre mot de passe de clé privée).
Je pense que le moyen le plus simple est de démarrer l'écran, que de démarrer ssh-agent avec un sous-shell, puis de rester dans ce sous-shell. C'est à dire
la source