Vor einiger Zeit habe ich bei StackOverflow diese Frage zu ssh-agent und crontab gestellt . Ich habe jetzt eine ähnliche Frage zu ssh-agent und screen auf Linux-Systemen.
Auf meinem Mac wird ssh-agent beim Systemstart gestartet, sodass es mir immer zur Verfügung steht. Ich denke, es wäre unter meinem Linux (redhat el5 / fedora) wahr, wenn ich X-Windows verwenden würde. Dies ist jedoch ein Remote-Server-Computer, und ich melde mich immer über ssh an.
Ich würde gerne SSH-Schlüssel richtig eingerichtet haben, damit ich mein Passwort während eines SVN-Updates oder Commits nicht mehrmals eingeben musste. Ich gebe meine Passphrase gerne einmal pro Sitzung ein und rate unserem Team davon ab, kennwortlose SSH-Schlüssel zu haben.
Für einen kurzen Moment schien es, als würde es funktionieren, "eval` ssh-agent -s` "in meinem .bash_profile auszuführen, gepaart mit einem Befehl, den ssh-agent zu töten, wenn ich mich abmeldete. Wir verwenden jedoch häufig den Bildschirm , um lang laufende interaktive Programme und Entwicklungsumgebungen zu verwalten. Wenn Sie ssh-agent wie oben beschrieben starten und stoppen, wird es beim Verlassen des Terminals beendet, und die Untersitzungen des Bildschirms, die sich früher auf diese ssh-agent-Instanz bezogen, werden abgebrochen.
Also ... wie kann ich ein Konsolenbenutzer sein, der den Bildschirm verwendet, der ein Passwort mit seinen SSH-Schlüsseln verwendet und der die Passphrase nicht ständig eingeben muss?
quelle
/etc/conf.d/local
für jeden Benutzer, der den Agenten verwendet, eine Zeile (oder eine entsprechende Zeile) eingeben , um einen separatenssh-agent
Prozess pro Benutzer zu starten . Wenn Sie, wie Sie sagen, nicht viele Benutzer haben, wäre das nicht schlecht. Sie sprechen einen guten Punkt (den ich vergessen habe zu berücksichtigen) über Terminalsitzungen an, die an den Agenten angehängt sind. siehe meine Bearbeitung zur Antwort.Überprüfen Sie den Schlüsselbund . Es macht all das oben Genannte. Schauen Sie sich vor allem die
--clear
und--timeout
Optionen an.quelle
Ein besserer Ansatz ist die Verwendung der SSH-Agentenweiterleitung (
-A
Option). Auf diese Weise kann die Person, die ssh verwendet, Schlüssel vom ssh-Agenten verwenden, der auf dem Computer ausgeführt wird, von dem sie kommt, vermutlich von der Workstation, an der sie tatsächlich sitzt.quelle
Um die Weiterleitung des SSH-Agenten zu verfolgen, werden Sie feststellen, dass die weitergeleiteten SSH-Anmeldeinformationen standardmäßig nicht für Ihre Bildschirmsitzung verfügbar sind, sobald Sie sich abmelden, wieder anmelden und erneut eine Verbindung zu Ihrer Sitzung herstellen.
Sie können dies jedoch umgehen, indem Sie die Umgebungsvariable SSH_AUTH_SOCK auf einen bekannten Wert setzen und diesen bekannten Speicherort auf Ihren aktuellen Authentifizierungssocket aktualisieren lassen.
Ich benutze diese Shell-Funktion, um den Bildschirm erneut aufzurufen und die SSH-Authentifizierungssocke zu reparieren:
und ich habe dies in meinem .screenrc:
Hoffe das hilft.
quelle
Wenn ich Sie richtig verstanden habe, möchten Sie nur eine Bildschirmsitzung, die Sie manchmal trennen und erneut anbringen, aber nie wieder die Kennwörter für den ssh-agent (Ihr Kennwort für den privaten Schlüssel) erneut eingeben möchten.
Ich denke, der einfachste Weg ist, den Bildschirm zu starten, als ssh-agent mit einer Sub-Shell zu starten und dann in dieser Sub-Shell zu bleiben. Dh
quelle