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.

10voto

Hugo Sohm Punkte 2224

Hier ist die Lösung, die ich verwendet habe, inspiriert von die antwort von sajib-khan . Die Standardkonfiguration ist nicht festgelegt; es ist mein persönliches Konto auf GitLab und das andere angegebene ist mein Firmenkonto. Das habe ich getan:

Erzeugen des SSH-Schlüssels

ssh-keygen -t rsa -f ~/.ssh/company -C "name.surname@company.com"

Bearbeiten Sie die SSH-Konfiguration

nano ~/.ssh/config

    Host company.gitlab.com
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/company

Löschen Sie den/die zwischengespeicherten SSH-Schlüssel

ssh-add -D

Testen Sie es!

ssh -T git@company.gitlab.com

Willkommen bei GitLab, @hugo.sohm!

ssh -T git@gitlab.com

Willkommen bei GitLab, @HugoSohm!

Nutzen Sie es!

Firmenkonto

git clone git@company.gitlab.com:group/project.git

Persönliches Konto/Standardkonto

git clone git@gitlab.com:username/project.git

Hier ist die fuente die ich verwendet habe.

8voto

Tuomas Pelkonen Punkte 7667

Verwenden Sie ssh-agent für Ihre Schlüssel.

7 Stimmen

Können Sie das näher erläutern?

3voto

Andrew Crowley Punkte 31

Sie können eine Konfigurationsdatei mit dem Namen config in Ihrem ~/.ssh Ordner. Er kann enthalten:

Host aws
    HostName *yourip*
    User *youruser*
    IdentityFile *idFile*

Damit können Sie eine Verbindung zu folgenden Rechnern herstellen

 ssh aws

0 Stimmen

Welche Form hat idFile? Ein absoluter Pfad. Können Sie ein Beispiel geben

3voto

GiorgosK Punkte 6217

Auf Ubuntu 18.04 (Bionic Beaver) 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.

Nur um das klarzustellen: Sie können mit diesen Befehlen einen neuen Schlüssel erstellen:

# Generate key make sure you give it a new name (id_rsa_server2)
ssh-keygen

# Make sure ssh agent is running
eval `ssh-agent`

# Add the new key
ssh-add ~/.ssh/id_rsa_server2

# Get the public key to add it to a remote system for authentication
cat ~/.ssh/id_rsa_server2.pub

2voto

dgbt Punkte 251

Wie bereits auf eine Atlassian-Blog-Seite , erzeugen eine Konfiguration Datei innerhalb der .ssh einschließlich des folgenden Textes:

#user1 account
 Host bitbucket.org-user1
     HostName bitbucket.org
     User git
     IdentityFile ~/.ssh/user1
     IdentitiesOnly yes

 #user2 account
 Host bitbucket.org-user2
     HostName bitbucket.org
     User git
     IdentityFile ~/.ssh/user2
     IdentitiesOnly yes

Dann können Sie einfach mit dem Suffix Domain auschecken und innerhalb der Projekte die Autorennamen usw. lokal konfigurieren.

0 Stimmen

Ich habe dasselbe für GitHub ohne die IdentitiesOnly yes Zeilen. Es funktioniert.

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