Schlagwort-Archive: ssh

Wie nutzt man mehrere GitHub-Accounts auf einem Rechner?

Wenn Sie mehrere GitHub-Accounts haben und auf demselben Rechner arbeiten möchten, können Sie Ihre Git-Konfiguration anpassen, um sicherzustellen, dass die richtigen Anmeldeinformationen für die jeweiligen Repositories verwendet werden.

1. Legen Sie für jeden GitHub-Account, den Sie verwenden möchten, ein neues SSH-Schlüsselpaar an.

Zunächst prüfen wir, ob schon ein SSH-Schlüssel auf ihrem Rechner existiert:

ls -al ~/.ssh

Sollte kein Schlüssel angelegt sein, müssen wir eben einen erzeugen:

ssh-keygen -t rsa -b 4096 -C "Ihr Kommentar"

Es ist nicht unbedingt nötig, das Schlüsselpaar mit einem Passwort zu sichern – vorausgesetzt, Sie sind sich sicher, dass keine unbefugte Person Zugriff auf Ihr Home-Verzeichnis hat. Ich gehe folgendermaßen vor:

mkdir ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa -b 4096 -C "Schlüssel 1 auf masch1"
ls -la

Das Schlüsselpaar nenne ich beispielhaft „id_rsa_01“

Im Verzeichnis befinden sich dann zwei zusammengehörende Dateien: „id_rsa_01“ und „id_rsa_01.pub“. Erstere beinhaltet den privaten und Letztere den öffentlichen Schlüssel.

Generierung eines RSA-Schlüsselpaares
ssh-keygen -t rsa -b 4096 -C "Schlüssel 1 auf masch1"
Generierung eines RSA-Schlüsselpaares

Man sollte sich den Inhalt beider Dateien einmal anschauen, um den Aufbau zu kennen.

cat id_rsa_01
cat id_rsa_01.pub
Der private RSA-Schlüssel
Der private RSA-Schlüssel
Der öffentliche RSA-Schlüssel
Der öffentliche RSA-Schlüssel

WICHTIG: Sie dürfen den privaten Schlüssel „id_rsa_01“ niemals an Dritte geben, schon gar nicht ohne eine Passwortsicherung. Ich werde nach dem Schreiben dieses Artikels das Schlüsselpaar löschen und ein neues anlegen, damit niemand es aus der Grafik kopieren kann.

2. Fügen Sie jeden öffentlichen SSH-Schlüssel Ihrem GitHub-Konto hinzu.

Um einen öffentlichen SSH-Schlüssel zu Ihrem GitHub-Konto hinzuzufügen, können Sie die folgenden Schritte ausführen:

Kopieren Sie den Inhalt der öffentlichen Schlüsseldatei (hier: ~/.ssh/id_rsa_01.pub) komplett in die Zwischenablage.

cat ~/.ssh/id_rsa_01.pub

Gehen Sie zu Ihrem GitHub-Konto und klicken Sie auf das Dropdown-Menü in der oberen rechten Ecke. Wählen Sie „Settings“ aus.

Klicken Sie im linken Menü auf „SSH and GPG Keys“.

Klicken Sie dann auf „new SSH key“

Geben Sie einen Titel für den Schlüssel ein (z.B. „RSA 1 Key für Maschine 1“). Behalten Sie die Auswahl „Authentication key“ bei. Fügen Sie den Inhalt des öffentlichen Schlüssels in das Feld „Key“ ein. Klicken Sie auf „Add SSH key“.

Danach sollten Sie folgenden Bildschirm erhalten:

Mehr Informationen zum Thema SSH und GitHub

Da wir mindestens zwei Schlüsselpaare für diese Aufgabe benötigen, legen Sie bitte gemäß Schritt 1 und 2 ein neues, zweites Paar an und nennen es „id_rsa_02“.

Anschließen öffnen Sie ihren zweiten GitHub-Account und fügen diesem den zweiten, privaten Schlüssel hinzu.

3. Konfigurieren Sie Git so, dass es den richtigen Schlüssel für jedes Repository verwendet.

Nun legen wir die Datei „~/.ssh/config“ an (wenn sie noch nicht existieren sollte) und bearbeiten sie.

nano ~/.ssh/config

Hier ein Beispiel

# Private github account: 1manfactory
Host github-private
   HostName github.com
   IdentityFile ~/.ssh/id_rsa_01
   IdentitiesOnly yes

# Company github account: Umbrella Corporation
Host github-umbrella
   HostName github.com
   IdentityFile ~/.ssh/id_rsa_02
   IdentitiesOnly yes

Falls Sie ihre Schlüsselpaare mit einem Passwort gesichert haben, sollten Sie beide Schlüssel dem SSH-Agenten hinzufügen. Somit werden Sie in dieser Session nur einmal nach dem Passwort gefragt, wenn Sie mit GitHub kommunizieren.

eval $(ssh-agent) # Sonderbefehl zum Start des SSH-Agenten
ssh-add ~/.ssh/id_rsa_01
ssh-add ~/.ssh/id_rsa_02
SSH-Agent: Schlüssel hinzufügen
SSH-Agent: Schlüssel hinzufügen

Damit es nicht zu einer Fehlermeldung kommt, müssen wir jetzt auch den öffentlichen Schlüssel von GitHub herunterladen. Der Befehl „ssh-keyscan“ sammelt öffentliche Schlüssel und speichert sie in der Datei „~/.ssh/known_hosts“, so dass Sie bei zukünftigen SSH-Verbindungen nicht mehr danach gefragt werden.

ssh-keyscan github.com >> ~/.ssh/known_hosts

Jetzt testen wir beide Verbindungen.

ssh -T git@github-private
ssh -T git@github-umbrella

4. Der Beweis: Wir klonen ein Repository und pushen eine Änderung

Wenn alles geklappt hat, sollte es inzwischen kein Problem mehr sein, ein Repository zu klonen.

eval $(ssh-agent) # den SSH-Agenten starten
cd ~
git clone git@github-private:1manfactory/demoprojekt.git # ein simples Demo
cd demoprojekt
dir
cat README.md
Ein Repository aus GitHub klonen per SSH-Schlüssel
Ein Repository aus GitHub klonen per SSH-Schlüssel

Bei Bedarf kann/sollte man noch die E-Mail-Adresse und den Namen für dieses lokale Repository anpassen:

git config user.email "name@domain.org"
git config user.name "Martin Mustermann"

Eine Datei können wir jetzt wie gewohnt ins Repository übernehmen (=commit) und zu GitHub übertragen (=push).

nano README.md # ein bisschen was ändern
git add .
git commit -m "zweites commit von lokal"
git push # und hochladen nach GitHub