Wie man permanent einen privaten Schlüssel mit ssh-add auf Ubuntu hinzufügen? [geschlossen]

StackOverflow https://stackoverflow.com/questions/3466626

  •  28-09-2019
  •  | 
  •  

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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top