Wie man permanent einen privaten Schlüssel mit ssh-add auf Ubuntu hinzufügen? [geschlossen]
Frage
Ich habe einen privaten Schlüssel mit einem Passwort geschützt einen Server via SSH zuzugreifen.
Ich habe 2 Linux (Ubuntu 10.04) Maschinen und das Verhalten von ssh-add-Befehl unterscheidet sich in beiden.
In einer Maschine, sobald ich „ssh-add .ssh / identity“ verwenden und mein Passwort eingegeben wurde der Schlüssel permanent hinzugefügt, dh Abschaltung jedes Mal, wenn ich den Computer und die Anmeldung wieder wird der Schlüssel bereits hinzugefügt.
In der anderen, ich habe den Schlüssel jedes Mal, wenn ich Login hinzuzufügen.
Soweit ich mich erinnere, habe ich die gleiche Sache auf beide. Der einzige Unterschied ist, dass der Schlüssel wurde auf dem einen erstellt, die permanent hinzugefügt wird.
Wer weiß, wie es dauerhaft an der anderen Maschine hinzufügen, wie gut?
Lösung
Eine Lösung wäre es, die Schlüsseldateien zu zwingen, dauerhaft gehalten werden, indem man sich in Ihrer ~/.ssh/config
Datei hinzufügen:
IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer
Wenn Sie nicht über ein ‚config‘ Datei im ~ / .ssh Verzeichnis, dann sollten Sie eine erstellen. Dabei spielt es keine root Rechte benötigen, so einfach:
nano ~/.ssh/config
... und geben Sie die obigen Zeilen gemäß Ihren Anforderungen.
Dazu die Datei Bedürfnisse zu arbeiten chmod haben 600. Sie können den Befehl chmod 600 ~/.ssh/config
verwenden.
Wenn Sie möchten, dass alle Benutzer auf dem Computer der Schlüssel zu verwenden, setzen Sie diese Zeilen in /etc/ssh/ssh_config
und der Schlüssel in einem Ordner für alle zugänglich sind.
Zusätzlich, wenn Sie den Schlüssel für einen speziellen Host festlegen möchten, können Sie die folgenden in Ihrer ~ / .ssh / config tun:
Host github.com
User git
IdentityFile ~/.ssh/githubKey
Dies hat den Vorteil, wenn Sie viele Identitäten haben, dass ein Server ablehnen Sie nicht, weil Sie die falschen Identitäten zuerst versucht. Es wird nur die spezifische Identität versucht werden.
Andere Tipps
Dieser antwortete nicht das gleiche Problem für mich unter Mac OS X Lion. Ich landete und fügte hinzu:
ssh-add ~/.ssh/id_rsa &>/dev/null
Zu meiner .zshrc (aber .profile wäre auch in Ordnung), die es festgelegt zu haben scheint.
(wie hier vorgeschlagen: http://geek.michaelgrace.org / 2011/09 / permanent-Add-ssh-key-ssh-add / )
ich dieses Problem auf Mac OSX gelöst (10.10) unter Verwendung von Option -K für ssh-add:
ssh-add -K ~/.ssh/your_private_key
Für macOS 10,12 und später müssen Sie zusätzlich Ihre ssh Config bearbeiten, wie hier beschrieben: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Fügen Sie einfach den Schlüsselbund, wie in Ubuntu Quick Tips verwiesen https://help.ubuntu.com/community/QuickTips
Was
Statt ständig ssh-agent und ssh-add Inbetriebnahme ist es möglich, Ihre SSH-Schlüssel zu verwenden, Schlüsselanhänger zu verwalten. So installieren Sie Schlüsselanhänger, können Sie einfach hier klicken, oder verwenden Sie Synaptische den Job oder apt-get von der Kommandozeile zu tun.
Befehlszeile
Eine andere Möglichkeit, die Datei zu installieren ist, das Terminal zu öffnen (Application-> Zubehör-> Terminal) und geben Sie:
sudo apt-get install keychain
Datei bearbeiten
Sie sollten die folgenden Zeilen zu Ihrem $ hinzufügen {HOME} / bashrc oder /etc/bash.bashrc:.
keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh
Ich habe versucht, @ Aaron-Lösung und es hat ganz für mich nicht, weil es würde meine Schlüssel erneut hinzufügen jedes Mal, wenn ich einen neuen Tab in meinem Terminal geöffnet. Also habe ich es ein wenig verändert (beachten Sie, dass die meisten meiner Schlüssel auch mit einem Passwort geschützt, so ich nicht nur die Ausgabe nach / dev / null senden):
added_keys=`ssh-add -l`
if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
ssh-add "$HOME/.ssh/my_key"
fi
Was dies bedeutet ist, dass es die Ausgabe von ssh-add -l
prüft (die alle Schlüssel auflistet, die hinzugefügt wurden) für einen bestimmten Schlüssel und wenn sie es nicht findet, dann fügt sie es mit ssh-add
.
Nun ist das erste Mal, dass ich öffne mein Terminal Ich bin für die Passwörter für meine privaten Schlüssel gefragt, und ich fragte nicht wieder, bis ich Neustart (oder Abmelden - ich habe nicht geprüft). Computer
Da ich ein paar Tasten haben lagere ich die Ausgabe von ssh-add -l
in einem variablen Leistung zu verbessern (zumindest ich denke, es verbessert die Leistung :))
PS: Ich bin auf Linux und dieser Code ging zu meiner ~/.bashrc
Datei - wenn Sie auf Mac OS X sind, dann gehe ich davon aus Sie es .zshrc
sollten hinzufügen oder .profile
EDIT:
Wie durch @Aaron in den Kommentaren darauf hingewiesen, wird die .zshrc
Datei aus dem zsh
Shell verwendet - also, wenn Sie verwenden, dass nicht (wenn Sie nicht sicher sind, dann ist es sehr wahrscheinlich, ich bin bash
stattdessen verwenden), dieser Code gehen auf Ihre .bashrc
Datei.
In meinem Fall war die Lösung:
Berechtigungen auf der Config-Datei sollten 600
chmod 600 config
sein
erwähnt Wie in den Kommentaren oben generalopinion
Keine Notwendigkeit, die Konfigurationsdatei Inhalt zu berühren.
Ich hatte das gleiche Problem auf Ubuntu 16.04: einige Schlüssel wurden für andere permanent, fügte ich hatte ssh-add
auf jeder Sitzung auszuführen. Ich fand heraus, dass die Schlüssel, die permanent hinzugefügt wurden, hatten sowohl private als auch öffentliche Schlüssel befindet sich in ~/.ssh
und die Schlüssel, die auf jeder Sitzung vergessen wurden, hatten nur private Schlüssel in ~/.ssh
Richt. So Lösung ist einfach:. Sie sollten Kopieren Sie beide privaten und öffentlichen Schlüssel zum ~/.ssh
vor der Ausführung ssh-add
Unter Ubuntu 14.04 (vielleicht früher, vielleicht noch) Sie brauchen nicht einmal die Konsole:
- starten
seahorse
oder startet das, was Sie für „Schlüssel“ finden Suche - Erstellen Sie einen SSH-Schlüssel dort (oder Import eins)
- keine Notwendigkeit, das Passwort leer verlassen
- es wird Ihnen sogar den öffentlichen Schlüssel an einen Server drücken (oder mehr)
- Sie werden mit einem ssh-agent am Ende laufen und diesen Schlüssel geladen, aber gesperrt
- using
ssh
Willen pickup die Identität (d.h. key) durch die Agenten - bei der ersten Verwendung während der Sitzung, wird das Passwort überprüft werden
- und Sie haben die Möglichkeit, den Schlüssel automatisch beim Login zu entsperren
- Das heißt, die Login Auth verwendet wird, das Passwort des Schlüssels zu wickeln
- Hinweis: Wenn Sie möchten, dass Ihre Identität zu übermitteln (d agenten Forwarding) invoke Ihre
ssh
mit-A
oder machen, dass der Standard- sonst können Sie nicht mit diesem Schlüssel authentifizieren auf einem Computer anmelden, die Sie später auf eine dritte Maschine
Ich betreibe Ubuntu mit zwei id_rsa Schlüssel des. (Ein persönlicher für Arbeit). ssh-add würde sich erinnern, einen Schlüssel (persönliche) und vergessen, das Unternehmen zu einem jedes Mal.
Überprüfen Sie sich die Differenz zwischen den beiden sah ich meine persönlichen Schlüssel 400 Rechte hatte, während das Unternehmen eine 600 Rechte hatte. (Hatte u + w). Das Entfernen der Benutzer Schreibrecht der Firma Schlüssel (u-w oder Set 400) fixiert mein Problem. ssh-add merkt sich nun beide Tasten los.
Das Hinzufügen der folgenden Zeilen in „~ / .bashrc“ löste das Problem für mich. Ich bin mit Ubuntu 14.04 Desktop.
eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"
sehr einfach ^ _ ^ zwei Schritte
1.yum installieren Schlüsselanhänger
2.Add Code unten an Bash_profile
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
Das ist für mich gearbeitet.
ssh-agent /bin/sh
ssh-add /path/to/your/key
Für diejenigen, die Fische verwenden Shell können Sie die folgende Funktion verwenden, dann rufen Sie es in ~ / .config / Fisch / config.fish. Es werden alle Tasten laden, die mit Anfang id_rsa in den ssh-agent
.
# Load all ssh keys that start with "id_rsa"
function loadsshkeys
set added_keys (ssh-add -l)
for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
if test ! (echo $added_keys | grep -o -e $key)
ssh-add "$key"
end
end
end
# Call the function to run it.
loadsshkeys
Wenn Sie wollen, dass die ssh-agent
Auto gestartet haben, wenn Sie ein Terminal öffnen Sie verwenden können, tuvistavie / Fisch-ssh-agent dies zu tun.