Ich verwende Mac OS X Lion und logge mich jeden Tag über SSH bei Remote-Hosts ein. Obwohl ich das SSH-Schlüsselpaar für die Remote-Authentifizierung verwende und nicht die Anmeldungsphrase jedes Hosts motorisieren muss, ist es immer noch sehr ärgerlich, dass das Terminal nach der Passphrase für den Zugriff auf meinen privaten SSH-Schlüssel fragt.
Aus Sicherheitsgründen wird meiner Meinung nach eine Passphrase für den Zugriff auf den privaten SSH-Schlüssel benötigt. Gibt es eine Möglichkeit, die das Terminal veranlasst, den Ausdruck nur einmal beim Start abzufragen, ihn dann auswendig zu lernen und meinen privaten Schlüssel in späteren SSH-Sitzungen automatisch zu verwenden?
Es gibt ein Skript namens, keychain
das unter Gentoo Linux einwandfrei funktioniert. Aber ich habe es unter Mac OS X Lion nie herausgefunden. Was mehr ist , gibt es so viele einschüchternd Begriffe wie ssh-agent
, ssh-add
. Nachdem ich verschiedene Materialien über diese SSH-Toolkits gelesen und einige frustrierte Experimente durchgeführt hatte, wurde ich verwirrter.
Daher bin ich zu StackExchange gekommen und habe nach Ratschlägen zu den folgenden Fragen gesucht.
- Was ist
ssh-agent
,ssh-add
,keychain
,Keychain Access.app
und wie sie miteinander interagieren? - Wie kann ich die Passphrase für meinen privaten SSH-Schlüssel bei der Anmeldung einmal eingeben und bei der späteren Erstellung einer SSH-Sitzung frei verwenden?
- Errr ... Was ist los mit
Keychain Access.app
? Der SSH-Ausdruck wird nicht wie zuvor gespeichert.
Ich liste auf, was ich hier gemacht habe. Hoffentlich gibt es Hinweise auf die Schritte, die ich verpasst habe.
Schritt 1. Erstellen Sie ein SSH-Schlüsselpaar auf meinem Mac.
$ ssh-keygen -t rsa -C "me@email.com"
# Set a passphrase for accessing the private key.
Schritt 2. Kopieren Sie meinen öffentlichen SSH-Schlüssel auf den Remote-Host. Zum Beispiel kopiere ich den Schlüssel auf localhost, Mac.
$ ssh-copy-id USER@localhost
# Enter the login password for USER at localhost, not my SSH passphrase
Schritt 3. Versuchen Sie dann, über die SSH-Schlüsselpaarauthentifizierung eine Verbindung zum Remote-Host (hier localhost) herzustellen.
$ ssh USER@locahost
Enter passphrase for key '/Users/YOUR_ACCOUNT/.ssh/id_rsa':
# Enter my SSH passphrase, not the login password.
Schritt 4. Melden Sie sich vom Remote-Host ab und versuchen Sie erneut, eine Verbindung herzustellen. Verdammt, das Terminal fragt erneut nach der SSH-Phrase.
Eine häufig gestellte Frage lautet: "Funktioniert ssh-agent gut auf Ihrem Mac?". Ehrlich gesagt habe ich keine Ahnung, was mit diesen Dingen los ist. Hier einige laufende Ergebnisse.
$ echo $SSH_AUTH_SOCK
/tmp/launch-M48niA/Listeners
$ echo $SSH_AUTH_PID
(EMPTY)
$ ssh-add -l
Could not open a connection to your authentication agent.
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-Z54zXukQiP/agent.26769; export SSH_AUTH_SOCK;
SSH_AGENT_PID=26770; export SSH_AGENT_PID;
echo Agent pid 26770;
$ ssh-add -l
Could not open a connection to your authentication agent.
$ echo $SSH_AUTH_SOCK
/tmp/launch-M48niA/Listeners
$ echo $SSH_AUTH_PID
(STILL EMPTY)
$ ssh-agent # Oh no, anther ssh-agent with different PID
SSH_AUTH_SOCK=/tmp/ssh-cx0B4FUX8B/agent.26898; export SSH_AUTH_SOCK;
SSH_AGENT_PID=26899; export SSH_AGENT_PID;
echo Agent pid 26899;
$ ps -e | grep -i ssh
26769 ?? 0:00.03 ssh-agent
26899 ?? 0:00.02 ssh-agent
Rückmeldungen sind willkommen. Vielen Dank!