So vermeiden Sie, dass Sie jedes Mal ssh-add eingeben

11

Ich habe einige Online-Dokumentationen zum Einrichten eines SSH-Agenten gelesen und befolgt , damit ich nicht jedes Mal ein Kennwort eingeben muss, wenn ich auf einem Remotecomputer ssh.

Mit Hilfe von ssh-agent muss ich dies jedoch ssh-addjedes Mal tun, wenn ich die Shell neu starte. Der ssh-addfordert mich dann auf, die Passphrase einzugeben, um den privaten Schlüssel zu entsperren.

Enter passphrase for key '/home/xx/.ssh/id_rsa':

Anstatt mein Kennwort für den Remote-Computer einzugeben, werde ich aufgefordert, das Kennwort für den privaten Schlüssel einzugeben. Es ist, als würde man aus einem Fegefeuer treten und sich danach in einer Hölle befinden. Es sieht so aus, als würde die id_rsa in einer Sitzung nur vorübergehend zum ssh-agent hinzugefügt , da ich mich jedes Mal anmelde und tippessh-add -l . Ich bekomme:

The agent has no identities.

Darf ich fragen, wie dauerhaft der Schlüssel (id_rsa) in ssh-agent gespeichert wird? Vielen Dank

EDIT: das habe ich gemacht ssh-agent. Ich habe den folgenden Block angehängt~/.bash_profile

SSHAGENT=/usr/bin/ssh-agent                                                                                        
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "SSHAGENT" ]; then
  eval `$SSHAGENT $SSHAGENTARGS`
  trap "kill $SSH_AGENT_PID" 0
fi
ssgao
quelle
Meinen Sie damit, dass Sie Ihre Passphrase jedes Mal eingeben müssen, wenn Sie sich anmelden oder wenn Sie ein Shell-Fenster öffnen? Sie sagen, Sie haben einige Online-Dokumentationen befolgt, aber ssh-agent funktioniert unter Ubuntu sofort, sodass Sie nichts zu tun haben sollten. Was hast du genau gemacht?
Gilles 'SO - hör auf böse zu sein'
Ich muss jedes Mal eine Passphrase eingeben, wenn ich auf dem Remote-Computer ssh. ABER es ist nicht die Passphrase, um auf den Remote-Computer zuzugreifen, es ist die Passphrase, um meinen privaten Schlüssel (id_rsa) zu entsperren.
ssgao
Ich weiß, dass es die Passphrase Ihres Schlüssels ist. Ich frage Sie, was Sie getan haben, um ssh-agent einzurichten, und ob das Ausführen ssh-addeinen Effekt hat, der länger anhält als das Shell-Fenster, in das Sie es eingegeben haben.
Gilles 'SO - hör auf, böse zu sein'
Der Effekt hält an, bis ich mich vom System abmelde (lokal). Ich habe das, was ich gemacht habe, ssh-agentin die Post geschrieben.
ssgao
Dies klingt nach normalem Verhalten: Sie müssen Ihre Passphrase einmal pro Sitzung eingeben, um den Schlüssel zu entsperren. Wenn der entsperrte Schlüssel irgendwo gespeichert würde, würde dies den Zweck einer Passphrase auf dem Schlüssel zunichte machen - jeder, der den gespeicherten entsperrten Schlüssel erhält, könnte ihn verwenden. Hast du etwas anderes erwartet? Möchten Sie, dass der Schlüssel nach dem Abmelden im Speicher gespeichert wird, damit er bis zum nächsten Neustart verfügbar ist?
Gilles 'SO - hör auf böse zu sein'

Antworten:

6

Ich habe Schlüsselbund installiert.

sudo apt-get install keychain

Wenn Sie bash ausführen, müssen Sie Ihrem .bash_profile einige Befehle hinzufügen. Wenn Sie kein .bash_profile haben, erstellen Sie einen in Ihrem Home-Ordner. Fügen Sie diese Zeilen hinzu:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

Zu Beginn eines Arbeitstages werde ich mich einloggen. Wenn ich ein Terminal öffne, werde ich einmal zur Eingabe meiner Passphrase aufgefordert. Bei allen anderen neuen Terminals und Verbindungen werde ich nicht erneut nach meiner Passphrase gefragt.

Walpha
quelle
4
Wie unterscheidet sich das von der Eingabe ssh-addim Terminal?
ssgao
ya aber dann musst du jedes Mal ssh-add eingeben ... wenn du dies tust, werden deine 2 Schritte -> eval "$ (ssh-agent)" und ssh-add
abhishek
1

Was Sie suchen, ist weniger sicher, kann jedoch mithilfe der Authentifizierung mit öffentlichem Schlüssel ohne ssh-agent durchgeführt werden. Eine sicherere Option ist die Verwendung der Authentifizierung mit öffentlichem Schlüssel mit einer Passphrase, während die Kennwortauthentifizierung auf dem SSH-Server deaktiviert wird. Dies ist jedoch nicht das, wonach Sie gefragt haben. Anweisungen finden Sie unter dem Link unten in dieser Antwort, wenn Sie sich stattdessen dafür entscheiden.

Um ssh zu verwenden, ohne nach einer Passphrase gefragt zu werden, müssen Sie Ihr Schlüsselpaar generieren, während Sie das Passphrasenfeld leer lassen.

Um zu überprüfen, ob Sie bereits ein Schlüsselpaar generiert haben, suchen Sie in Ihrem Verzeichnis ~ / .ssh nach den Dateien id_rsa und id_rsa.pub. Wenn sie bereits vorhanden sind, können Sie sie löschen oder verschieben, um ein neues Schlüsselpaar zu erstellen.

Hinweis: Wenn Sie sie löschen, verlieren Sie den Zugriff auf alle von Ihnen verwendeten SSH-Server und die alten Schlüssel zur Authentifizierung, wenn die Kennwortauthentifizierung auf dem Server deaktiviert ist.

Führen Sie den folgenden Befehl aus, um ein neues Schlüsselpaar zu erstellen:

ssh-keygen -t rsa

Übernehmen Sie den Standardspeicherort für die Schlüssel und lassen Sie die Passphrase leer.

Verwenden Sie den folgenden Befehl, um dem SSH-Server, zu dem Sie eine Verbindung herstellen möchten, Ihren öffentlichen Schlüssel zu geben:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost

Nachdem Sie diese Schritte ausgeführt haben, können Sie sich ohne Kennwort von dem von Ihnen verwendeten Computer beim Remoteserver anmelden.

Referenz: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/

Omegamormegil
quelle
0

Vor einiger Zeit wurde ich plötzlich nach einer Passphrase gefragt, um meinen SSH-Schlüssel zu entsperren git push. Es stellte sich heraus, dass es ausreichte, SSH-Schlüsselagenten (GNOME-Schlüsselring: SSH-Agent) zu Startanwendungen hinzuzufügen, um nicht mehr nach einer Passphrase gefragt zu werden (in meinem Fall - nur um das Kontrollkästchen zu aktivieren):

Geben Sie hier die Bildbeschreibung ein

Alexey
quelle
Könnten Sie bitte Ihre Antwort näher erläutern, wie dies zu tun ist und warum das betreffende Problem dadurch gelöst wird? Vielen Dank.
Byte Commander