Ich möchte mehrere private Schlüssel verwenden, um eine Verbindung zu verschiedenen Servern oder verschiedenen Teilen desselben Servers herzustellen (meine Verwendungszwecke sind Systemadministration des Servers, Verwaltung von Git und normale Git-Nutzung innerhalb desselben Servers). Ich habe versucht, einfach die Schlüssel in den id_rsa
Dateien zu stapeln , ohne Erfolg.
Anscheinend ist eine einfache Möglichkeit, dies zu tun, die Verwendung des Befehls
ssh -i <key location> [email protected]
Das ist ziemlich umständlich.
Irgendwelche Vorschläge, wie man das etwas einfacher macht?
Antworten:
Von meinem
.ssh/config
:Und so weiter.
quelle
IdentityFile
Einträge für denselben angeben könnenHost
, die dann beim Herstellen der Verbindung in der richtigen Reihenfolge versucht werden.IdentitiesOnly yes
diese Option, um ~ / .ssh / id_rsa oder andere Identitäten zu verhindern. (Dies war ursprünglich eine Bearbeitung)Sie können ssh anweisen, beim Verbinden mehrere Schlüssel nacheinander auszuprobieren. Hier ist wie:
Auf diese Weise müssen Sie nicht angeben, welcher Schlüssel mit welchem Server funktioniert. Es wird nur der erste Arbeitsschlüssel verwendet.
Außerdem würden Sie nur dann eine Passphrase eingeben, wenn ein bestimmter Server bereit ist, den Schlüssel zu akzeptieren. Wie oben gezeigt, hat ssh nicht versucht, nach einem Passwort zu fragen,
.ssh/id_rsa
auch wenn es eines hatte.Sicherlich übertrifft es eine Konfiguration pro Server nicht wie in anderen Antworten, aber zumindest müssen Sie keine Konfiguration für alle Server hinzufügen, mit denen Sie eine Verbindung herstellen!
quelle
Die Antwort von Randal Schwartz hat mir fast den ganzen Weg geholfen. Ich habe einen anderen Benutzernamen auf dem Server, daher musste ich meiner Datei das Schlüsselwort User hinzufügen :
Jetzt können Sie eine Verbindung mit dem Anzeigenamen herstellen:
Weitere Schlüsselwörter finden Sie auf der OpenSSH-Manpage . HINWEIS: Einige der aufgelisteten Schlüsselwörter sind möglicherweise bereits in Ihrer Datei / etc / ssh / ssh_config vorhanden .
quelle
In den vorherigen Antworten wurde die Art und Weise, wie eine Konfigurationsdatei zum Verwalten mehrerer SSH-Schlüssel erstellt wird, ordnungsgemäß erläutert. Ich denke, das Wichtigste, was ebenfalls erklärt werden muss, ist das Ersetzen eines Hostnamens durch einen Aliasnamen beim Klonen des Repositorys .
Angenommen, der Benutzername des GitHub-Kontos Ihres Unternehmens lautet abc1234 . Angenommen, der Benutzername Ihres persönlichen GitHub-Kontos lautet jack1234
Angenommen, Sie haben zwei RSA-Schlüssel erstellt, nämlich id_rsa_company und id_rsa_personal . Ihre Konfigurationsdatei sieht also wie folgt aus:
Wenn Sie nun das Repository (benannte Demo) vom GitHub-Konto des Unternehmens klonen , lautet die Repository-URL wie folgt:
Währenddessen
git clone
sollten Sie die obige Repository-URL wie folgt ändern:Beachten Sie, wie github.com jetzt durch den Alias "Firma" ersetzt wird, wie wir ihn in der Konfigurationsdatei definiert haben.
Ebenso müssen Sie die Klon-URL des Repositorys im persönlichen Konto abhängig vom in der Konfigurationsdatei angegebenen Alias ändern.
quelle
Stellen Sie sicher, dass Sie es testen, bevor Sie Folgendes hinzufügen:
Wenn Sie Probleme mit Fehlern haben, hilft manchmal das Ändern der Sicherheit der Datei:
quelle
SSH-Schlüssel generieren:
Generieren
another SSH key
:Jetzt sollten zwei öffentliche Schlüssel ( id_rsa.pub , accountB.pub ) im
~/.ssh/
Verzeichnis vorhanden sein.Erstellen Sie eine Konfigurationsdatei
~/.ssh/config
mit folgendem Inhalt:Vom
default
Konto klonen .Vom
accountB
Konto klonen .Sehen Sie hier mehr
quelle
Ich würde Tuomas bezüglich der Verwendung von ssh-agent zustimmen. Ich wollte auch einen zweiten privaten Schlüssel für die Arbeit hinzufügen, und dieses Tutorial hat mir sehr gut gefallen.
Die Schritte sind wie folgt:
$ ssh-agent bash
$ ssh-add /path.to/private/key
z.Bssh-add ~/.ssh/id_rsa
$ ssh-add -l
$ssh -v <host url>
zssh -v [email protected]
quelle
ssh-agent
ich jahrelang verwendet habe, habe ich kürzlich auf Gnome'sgnome-keyring
in meinemi3
Wm umgestellt. Der Grund ist einfach: Der Schlüsselring-Manager von Gnome übernimmt automatisch das Hinzufügen und Entfernen von SSH-Schlüsseln, ohne dass ich mich daran erinnern mussssh-add
. Außerdem erteile ich ein einziges Passwort, um sie zu entsperren (und aus Sicherheitsgründen eine Zeitüberschreitung zu einem bestimmten Zeitpunkt). Jedem sein eigenes. Da ich Gnome-Einstellungen auf Arch verwende, war es Plug-and-Play mit meinem Setup. Wenn Sie ein Anti-Gnom sind, ignorieren Sie diesen Kommentar.Ich war vor einiger Zeit auf dieses Problem gestoßen, als ich zwei Bitbucket-Konten hatte und separate SSH-Schlüssel für beide speichern wollte. Das hat bei mir funktioniert.
Ich habe zwei separate SSH-Konfigurationen wie folgt erstellt.
Als ich nun ein Repository von meinem Arbeitskonto klonen musste, lautete der Befehl wie folgt.
Ich musste diesen Befehl ändern, um:
Ebenso musste der Klonbefehl von meinem persönlichen Konto auf geändert werden
Weitere Informationen finden Sie unter diesem Link .
quelle
Verwenden Sie ssh-agent für Ihre Schlüssel.
quelle
Mit der neuesten Version von git können wir jetzt sshCommand in der repository-spezifischen git-Konfigurationsdatei angeben .
quelle
WICHTIG: Sie müssen ssh-agent starten
Sie müssen ssh-agent starten (falls es noch nicht ausgeführt wird), bevor Sie ssh-add wie folgt verwenden:
Beachten Sie, dass der Befehl eval den Agenten bei GIT-Bash unter Windows startet. Andere Umgebungen verwenden möglicherweise eine Variante, um den SSH-Agenten zu starten.
quelle
Sie können eine Konfigurationsdatei mit dem Namen
config
in Ihrem~/.ssh
Ordner erstellen . Es kann enthalten:Auf diese Weise können Sie eine Verbindung zu solchen Computern herstellen
quelle
Am Ubuntu 18.04 gibt es nichts zu tun.
Nachdem ein zweiter SSH-Schlüssel erfolgreich erstellt wurde, versucht das System, für jede Verbindung einen passenden SSH-Schlüssel zu finden.
Um klar zu sein, können Sie mit diesen Befehlen einen neuen Schlüssel erstellen
quelle
Mehrere Schlüsselpaare in GITHUB
1.0 SSH-KONFIG-DATEI
1.1 CREATE ~ / .ssh / config
1.2 chmod 600 ~ / .ssh / config (MUSS)
1.3 Eingabe folgend in die Datei:
Fall A: FRESH NEW GIT CLONE
Verwenden Sie diesen Befehl, um einen Klon zu erstellen:
$ git clone git @ pizza: yourgitusername / pizzahut_repo.git
Hinweis: Wenn Sie den Hostnamen "pizza" von .ssh / config in Zukunft ändern möchten, gehen Sie in den geklonten git-Ordner und bearbeiten Sie die URL-Zeile der .git / config-Datei (siehe Fall B).
Fall B: HABEN SIE BEREITS GIT CLONE FOLDER
2.1 Wechseln Sie in den geklonten Ordner und dann in den Ordner .git
2.2 Konfigurationsdatei bearbeiten
2.3 Aktualisieren Sie die URL von Alt auf Neu:
quelle
Für mich war die einzige funktionierende Lösung, einfach hinzuzufügen
~/.ssh/config
your_ssh_key
ist ohne Erweiterung, nicht verwenden.pub
quelle
Unter Centos 6.5 mit OpenSSH_5.3p1, OpenSSL 1.0.1e-fips habe ich das Problem gelöst, indem ich meine Schlüsseldateien so umbenannt habe, dass keine von ihnen den Standardnamen hatte. Mein .ssh-Verzeichnis enthält id_rsa_foo und id_rsa_bar, aber keine id_rsa usw.
quelle
Wie auf der atlassianischen Blog-Seite erwähnt, generieren Sie eine Konfiguration in .ssh mit dem folgenden Text:
Anschließend können Sie einfach mit der Suffixdomäne auschecken und innerhalb der Projekte die Autorennamen usw. lokal konfigurieren.
quelle
Sie können dieses sshmulti npm-Paket ausprobieren, um mehrere ssh-Schlüssel zu verwalten.
quelle
Hier ist die Lösung, die ich verwendet habe, inspiriert von der Antwort von @ sajib-khan. Die Standardkonfiguration ist nicht festgelegt, es ist mein persönliches Konto bei gitlab und das andere angegebene ist mein Firmenkonto. Hier was ich getan habe:
Generieren Sie den SSH-Schlüssel
ssh-keygen -t rsa -f ~/.ssh/company -C "[email protected]"
Bearbeiten Sie die SSH-Konfiguration
nano ~/.ssh/config
Löschen Sie zwischengespeicherte SSH-Schlüssel.
ssh-add -D
Probier es aus !
ssh -T [email protected]
ssh -T [email protected]
Benutze es !
Firmenkonto
$ git clone [email protected]:group/project.git
Persönliches / Standardkonto
$ git clone [email protected]:username/project.git
Hier ist die Quelle , die ich verwendet habe, hoffe es hilft!
quelle
Ich liebe den Ansatz, Folgendes in ~ / .ssh / config festzulegen:
Dann können Sie in Ihrem Repo eine
.env
Datei erstellen , die den zu verwendenden Befehl ssh enthält:Wenn Sie dann zB dotenv verwenden, wird die Umgebungsvariable automatisch exportiert und whoop whoop Sie können den gewünschten Schlüssel pro Projekt / Verzeichnis angeben. Die Pasphrase wird nur einmal abgefragt, da sie dem Schlüsselbund hinzugefügt wird.
Diese Lösung funktioniert perfekt mit Git und wurde entwickelt, um auf einem Mac zu funktionieren (aufgrund von
UseKeychain
).quelle