Ich habe einen privaten Schlüssel, der mit einem Passwort geschützt ist, um über SSH auf einen Server zuzugreifen.
Ich habe 2 Linux-Maschinen (Ubuntu 10.04) und das Verhalten des Befehls ssh-add ist in beiden unterschiedlich.
Auf einem Computer wurde der Schlüssel dauerhaft hinzugefügt, sobald ich "ssh-add .ssh / identity" verwendet und mein Kennwort eingegeben habe, dh jedes Mal, wenn ich den Computer herunterfahre und mich erneut anmelde, ist der Schlüssel bereits hinzugefügt.
In der anderen muss ich den Schlüssel jedes Mal hinzufügen, wenn ich mich anmelde.
Soweit ich mich erinnere, habe ich bei beiden das Gleiche getan. Der einzige Unterschied besteht darin, dass der Schlüssel für den Schlüssel erstellt wurde, der dauerhaft hinzugefügt wird.
Weiß jemand, wie man es auch dauerhaft zum anderen Computer hinzufügt?
Antworten:
Eine Lösung wäre, die dauerhafte Aufbewahrung der Schlüsseldateien zu erzwingen, indem Sie sie in Ihre
~/.ssh/config
Datei einfügen:Wenn Sie keine 'config'-Datei im Verzeichnis ~ / .ssh haben, sollten Sie eine erstellen. Es benötigt keine Root-Rechte, also einfach:
... und geben Sie die obigen Zeilen gemäß Ihren Anforderungen ein.
Damit dies funktioniert, muss die Datei chmod 600 haben. Sie können den Befehl verwenden
chmod 600 ~/.ssh/config
.Wenn Sie möchten, dass alle Benutzer auf dem Computer den Schlüssel verwenden, geben Sie diese Zeilen ein
/etc/ssh/ssh_config
und den Schlüssel in einen Ordner, auf den alle zugreifen können.Wenn Sie den Schlüssel für einen Host festlegen möchten, können Sie in ~ / .ssh / config Folgendes tun:
Dies hat den Vorteil, dass Sie bei vielen Identitäten von einem Server nicht abgelehnt werden, weil Sie zuerst die falschen Identitäten ausprobiert haben. Es wird nur die spezifische Identität ausprobiert.
quelle
chmod 600 config
ssh-add ~/.ssh/gitHubKey
, um Ihre Schlüsselpassphrase zu speichern. Die von mir vorgeschlagene Lösung bestand darin, sie dauerhaft über Neustarts hinweg festzulegen.Dies hat für mich unter Mac OS X Lion nicht das gleiche Problem gelöst. Am Ende fügte ich hinzu:
Zu meiner .zshrc (aber .profile wäre auch in Ordnung), die es behoben zu haben scheint.
(Wie hier vorgeschlagen: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )
quelle
ForwardAgent yes
meiner.ssh/config
) hat dieses Problem fantastisch gelöst. Wie sich herausstellt, könnte esssh-add &>/dev/null
das Standardverhalten vonssh-add
sein, die in Ihrem.ssh
Ordner gefundenen Schlüssel hinzuzufügen .-K
fügt dem Schlüsselbund von OS X Schlüssel hinzu, mit denen sich OS X-GUIs bei fremden Servern authentifizieren. Das Poster in diesem Q stellt eine Verbindung über einen SSH-Tunnel her, stellt jedoch immer noch eine Verbindung zu einem Remote-Server her. A - [SSH-Tunnel] -> B Ich bin auf einem Remote-Server, möchte aber, dass die Authentifizierung anhand der Anmeldeinformationen auf meinem Heimsystem erfolgt. A <- [Auth] - B - [Connect] -> C Hilft-K
also nicht wirklich, ist aber eine großartige Lösung für die anderen Q.Ich habe dieses Problem unter Mac OSX (10.10) mit der Option -K für ssh-add gelöst:
Für macOS 10.12 und höher müssen Sie Ihre ssh-Konfiguration zusätzlich wie hier beschrieben bearbeiten: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
quelle
man ssh-add
MacOS High Sierrassh-add -K
wird die Passphrase im Schlüsselbund gespeichert und nach dem Neustart einfach verwendetssh-add -A
, ohne dass Sie Ihre Passphrase eingeben müssen.Fügen Sie einfach den Schlüsselbund hinzu, auf den in den Ubuntu-Kurztipps https://help.ubuntu.com/community/QuickTips verwiesen wird
Was
Anstatt ssh-agent und ssh-add ständig zu starten, können Sie Ihre ssh-Schlüssel mithilfe eines Schlüsselbunds verwalten. Um den Schlüsselbund zu installieren, klicken Sie einfach hier oder verwenden Sie Synaptic, um die Aufgabe zu erledigen oder apt-get über die Befehlszeile zu erhalten.
Befehlszeile
Eine andere Möglichkeit, die Datei zu installieren, besteht darin, das Terminal (Anwendung-> Zubehör-> Terminal) zu öffnen und Folgendes einzugeben:
Datei bearbeiten
Sie sollten dann die folgenden Zeilen zu $ {HOME} /. Bashrc oder /etc/bash.bashrc hinzufügen:
quelle
.
ist ein Alias fürsource
Ich habe @ Aarons Lösung ausprobiert und es hat bei mir nicht ganz funktioniert, da meine Schlüssel jedes Mal neu hinzugefügt wurden, wenn ich einen neuen Tab in meinem Terminal öffnete. Deshalb habe ich es ein wenig geändert (beachten Sie, dass die meisten meiner Schlüssel auch passwortgeschützt sind, sodass ich die Ausgabe nicht einfach an / dev / null senden kann):
Dies überprüft die Ausgabe von
ssh-add -l
(in der alle hinzugefügten Schlüssel aufgelistet sind) auf einen bestimmten Schlüssel. Wenn dieser nicht gefunden wird, wird er mit hinzugefügtssh-add
.Wenn ich jetzt mein Terminal zum ersten Mal öffne, werde ich nach den Passwörtern für meine privaten Schlüssel gefragt und erst wieder gefragt, wenn ich meinen Computer neu starte (oder mich abmelde - ich habe ihn nicht überprüft).
Da ich eine Reihe von Schlüsseln habe, speichere ich die Ausgabe
ssh-add -l
in einer Variablen, um die Leistung zu verbessern (zumindest denke ich, dass dies die Leistung verbessert :)).PS: Ich bin unter Linux und dieser Code wurde in meine
~/.bashrc
Datei aufgenommen. Wenn Sie unter Mac OS X arbeiten, sollten Sie ihn zu.zshrc
oder hinzufügen.profile
BEARBEITEN: Wie von @Aaron in den Kommentaren hervorgehoben, wird die
.zshrc
Datei aus derzsh
Shell verwendet. Wenn Sie dies also nicht verwenden (wenn Sie sich nicht sicher sind, verwenden Sie höchstwahrscheinlichbash
stattdessen), sollte dieser Code verwendet werden Gehen Sie zu Ihrer.bashrc
Datei.quelle
.zshrc
ist für diezsh
Shell, die ich anstelle von benutzebash
. Wenn Siebash
Mac OS X verwenden (Standardeinstellung), ist es.bashrc
auch vorhanden.ssh-add -l
Rückkehrecho $?
kann der Code verwendet werden, um zu entscheiden, ob ein Schlüssel hinzugefügt werden soll oder nicht. Ich bin mein Linux-Rechner mit Bash, derssh-add -l
den Schlüsseldateinamen nicht ausgibt. Der Rückkehrcode funktioniert immer.In meinem Fall war die Lösung:
Wie in den obigen Kommentaren von Generalopinion erwähnt
Sie müssen den Inhalt der Konfigurationsdatei nicht berühren.
quelle
~/.ssh/config
Datei für den Benutzer gelesen / geschrieben und von anderen nicht beschreibbar ist.Ich hatte das gleiche Problem unter Ubuntu 16.04: Einige Schlüssel wurden permanent hinzugefügt, andere musste ich
ssh-add
bei jeder Sitzung ausführen . Ich fand heraus, dass die permanent hinzugefügten Schlüssel sowohl einen privaten als auch einen öffentlichen Schlüssel enthielten~/.ssh
und die Schlüssel, die bei jeder Sitzung vergessen wurden, nur private Schlüssel im~/.ssh
Verzeichnis hatten. Die Lösung ist also einfach: Sie sollten vor der Ausführung sowohl den privaten als auch den öffentlichen Schlüssel kopieren .~/.ssh
ssh-add
PS: Soweit ich aus dem Gnome-Wiki weiß, funktioniert meine Methode dank des Gnome-Schlüsselbund-Tools, das Teil der Gnome-Desktop-Umgebung ist. Daher sollte meine Methode wahrscheinlich nur funktionieren, wenn Sie Gnome oder Gnome-basiertes DE verwenden.
quelle
Das Hinzufügen der folgenden Zeilen in "~ / .bashrc" löste das Problem für mich. Ich benutze Ubuntu 14.04 Desktop.
quelle
Unter Ubuntu 14.04 (vielleicht früher, vielleicht noch) brauchen Sie nicht einmal die Konsole:
seahorse
oder starten Sie das Ding, das Sie auf der Suche nach "Schlüssel" finden.ssh
wird die Identität (dh der Schlüssel) über den Agenten abgerufenssh
mit auf-A
oder machen Sie dies zur Standardeinstellungquelle
Ich starte Ubuntu mit zwei id_rsa-Schlüsseln. (eine persönliche für die Arbeit). ssh-add merkt sich einen Schlüssel (persönlichen) und vergisst jedes Mal einen.
Als ich den Unterschied zwischen den beiden herausfand, sah ich, dass mein persönlicher Schlüssel 400 Rechte hatte, während der Firmenschlüssel 600 Rechte hatte. (hatte u + w). Das Entfernen des Benutzerschreibens direkt vom Firmenschlüssel (uw oder auf 400 gesetzt) hat mein Problem behoben. ssh-add merkt sich jetzt beide Schlüssel.
quelle
Das hat bei mir funktioniert.
quelle
sehr einfach ^ _ ^ zwei Schritte
1. Sie installieren den Schlüsselbund
2. Fügen Sie den folgenden Code zu .bash_profile hinzu
quelle
Für diejenigen, die Fish Shell verwenden, können Sie die folgende Funktion verwenden und sie dann in
~/.config/fish/config.fish
oder in einer separaten Konfigurationsdatei in aufrufen~/.config/fish/conf.d/loadsshkeys.fish
. Es werden alle Schlüssel, die mit id_rsa beginnen, in die geladenssh-agent
.Wenn Sie möchten, dass das
ssh-agent
Auto beim Öffnen eines Terminals automatisch gestartet wird, können Sie dazu tuvistavie / fish-ssh-agent verwenden.quelle