1169 Stimmen

Beste Möglichkeit zur Verwendung mehrerer privater SSH-Schlüssel auf einem Client

Ich möchte mehrere private Schlüssel verwenden, um eine Verbindung zu verschiedenen Servern oder verschiedenen Teilen desselben Servers herzustellen (ich verwende sie für die Systemverwaltung des Servers, die Verwaltung von Git und die normale Verwendung von Git auf demselben Server). Ich habe versucht, die Schlüssel einfach in der id_rsa Dateien vergeblich.

Offensichtlich ist eine einfache Möglichkeit, dies zu tun, die Verwendung des Befehls

ssh -i <key location> login@server.example.com 

Das ist ziemlich umständlich.

Haben Sie einen Vorschlag, wie man das etwas einfacher machen kann?

8 Stimmen

Ich schrieb dieser Artikel in dem die verschiedenen Konfigurationen und ihre Stärken und Schwächen ausführlich erläutert werden.

2voto

Chris Punkte 46

Mehrere Schlüsselpaare auf GitHub

1.0 SSH-Konfigurationsdatei

1.1 erstellen. ~/.ssh/config

1.2 chmod 600 ~/.ssh/config ( debe )

1.3 Geben Sie Folgendes in die Datei ein:

Gastgeber-Pizza

Hostname github.com

PreferredAuthentications publickey # optional

IdentitätsDatei ~/.ssh/privatekey1

Fall A: Frischer neuer Git-Klon

Verwenden Sie diesen Befehl, um Git zu klonen:

$ git clone git@pizza:yourgitusername/pizzahut_repo.git

Hinweis: Wenn Sie den Hostnamen "pizza" in .ssh/config in Zukunft ändern möchten, gehen Sie in den geklonten Git-Ordner und bearbeiten Sie die URL-Zeile der Datei .git/config (siehe Fall B)

Fall B: Sie haben bereits einen Git-Klonordner

2.1 Gehen Sie zu dem geklonten Ordner und dann in das Verzeichnis .git Ordner

2.2 Konfigurationsdatei bearbeiten

2.3 Aktualisieren Sie die URL von *alt zu neu :

(Old) URL = git@github.com:yourgitusername/pizzahut_repo.git

(New) URL = git@pizza:yourgitusername/pizzahut_repo.git

1voto

danday74 Punkte 44782

WICHTIG: Sie müssen ssh-agent starten

Sie müssen ssh-agent starten (falls es noch nicht läuft), bevor Sie ssh-add wie folgt verwenden:

eval `ssh-agent -s` # start the agent

ssh-add id_rsa_2 # Where id_rsa_2 is your new private key file

Beachten Sie, dass der Befehl eval den Agenten auf Git Bash unter Windows. Andere Umgebungen können eine Variante zum Starten des SSH-Agenten verwenden.

1voto

blackjacx Punkte 7220

Mir gefällt der Ansatz, in der Datei ~/.ssh/config folgendes einzustellen:

# Configuration for GitHub to support multiple GitHub  keys
Host  github.com
  HostName github.com
  User git

# UseKeychain adds each keys passphrase to the keychain so you
# don't have to enter the passphrase each time.
  UseKeychain yes

# AddKeysToAgent would add the key to the agent whenever it is
# used, which might lead to debugging confusion since then
# sometimes the one repository works and sometimes the
# other depending on which key is used first.
#  AddKeysToAgent yes

# I only use my private id file so all private
# repositories don't need the environment variable
# `GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa"` to be set.
  IdentityFile ~/.ssh/id_rsa

Dann können Sie in Ihrem Repository eine .env Datei, die die ssh zu verwendenden Befehl:

GIT_SSH_COMMAND="ssh -i ~/.ssh/your_ssh_key"

Wenn Sie dann z.B. dotenv die Umgebungsvariable wird automatisch exportiert und Sie können den gewünschten Schlüssel pro Projekt/Verzeichnis angeben. Die Passphrase wird nur einmal abgefragt, da sie dem Schlüsselbund hinzugefügt wird.

Diese Lösung funktioniert perfekt mit Git und ist für den Einsatz auf einem Mac konzipiert (aufgrund der UseKeychain ).

1 Stimmen

Funktioniert auch unter Windows. OpenSSH!

0voto

Chris Owens Punkte 1017

Auf CentOS 6.5 mit OpenSSH_5.3p1 und OpenSSL 1.0.1e-fips habe ich das Problem gelöst, indem ich meine Schlüsseldateien umbenannt habe, so dass keine von ihnen den Standardnamen hatte.

Mein .ssh-Verzeichnis enthält id_rsa_foo und id_rsa_bar, aber kein id_rsa, etc.

1 Stimmen

Und wie werden die Schlüssel verwendet? Gibt es eine automatische Erkennung?

0 Stimmen

In der Antwort von Randal Schwartz finden Sie eine Möglichkeit, den richtigen Schlüssel für einen bestimmten Host auszuwählen stackoverflow.com/questions/2419566/

0 Stimmen

Ja, das macht es noch deutlicher. Auch die Verwendung des -i Option könnte zu folgendem Ergebnis führen no such identity: /home/embo/.ssh/id_rsa: No such file or directory .

-1voto

Anto Khan Punkte 43

Sie können versuchen こん sshmulti npm-Paket zur Verwaltung mehrerer SSH-Schlüssel.

1 Stimmen

Ich empfehle dringend ノット npm für so etwas zu verwenden. Es hatte eine Kaskade von Abhängigkeiten, die, bei einer kurzen Inspektion, eine Reihe von Einzelkämpfer-Entwicklern, mehrere Jahre alte Pakete enthalten. Die npm-Seite von sshmulti selbst erklärt, dass es ungetestet ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X