Mehrere GitHub-Repositories mit verschiedenen SSH-Keys benutzen

GitHub ist mittlerweile der De-facto-Standard für Git-Repositories, weshalb es nicht selten vorkommt, dass man mehrere private GitHub-Repositories mit verschiedenen SSH-Keys verwenden möchte. Um das zu erledigen, braucht man zum einen die SSH-Keys und zum anderen eine Konfigurationsdatei namens config innerhalb des .ssh Ordners.

Vorab

Der Trick in der Konfigurationsdatei besteht darin, dass man Pseudo-Hosts erstellt (z.B. github-cool-company) und dann in seinem Checkout-Pfad das github.com durch github-cool-company ersetzt.

Aus git@github.com:cool-company/cool-project.git wird dann git@github-cool-company:cool-company/cool-project.git. Der Pseudo-Host wird bei der Ausführung durch den HostName aus der Konfiguration ersetzt. Wie man SSH-Keys unter Windows erstellt und die entsprechenden Konfigurationen einstellt, wird im Folgenden beschrieben.

In allen folgenden Beispielen wird angenommen, dass der Benutzerordner C:\Users\Benny ist. Der Benutzerordner auf dem eigenen System lässt sich durch echo %HOMEPATH% in der Windows-Eingabeaufforderung herausfinden.

1. SSH-Keys erstellen

Um einen SSH-Key zu erstellen, braucht man ein Tool namens ssh-keygen. Das ssh-keygen-Tool erhält man durch die Installation von msysGit. Nachdem man msysGit installiert hat, muss man den C:\Program Files (x86)\Git\bin zur Path-Umgebungsvariable in Windows hinzufügen. Hat man das gemacht, kann man ssh-keygen nach einem Neustart der Eingabeaufforderung (cmd) verwenden.

Bei Ausführung von ssh-keygen auf der Eingabeaufforderung, werden die Dateien id_rsa (Private Key) und id_rsa.pub (Public Key) gespeichert. Gibt man keinen Pfad während der Erzeugung dieser Dateien an, so werden diese Dateien unter Windows 8.1 in C:\Users\Benny\AppData\Local\VirtualStore\Windows\SysWOW64 abgelegt.

2. SSH-Keys in den richtigen Ordner kopieren

Git erwartet, dass SSH-Keys im Ordner .ssh des Benutzerverzeichnisses vorhanden sind. In der Windows-Kommandozeile kann dieser Ordner mit dem Befehl mkdir "%HOMEPATH%/.ssh" erstellt werden. Sobald der .ssh-Ordner vorhanden ist, kann die Datei id_rsa dorthin kopiert werden. Den Inhalt des Public Keys (id_rsa.pub), hinterlegt man in seinem GitHub-Account im Menü SSH Keys.

3. SSH-Konfiguration erstellen

Wie bereits erwähnt, wird für die Verwendung mehrerer GitHub-Accounts eine Konfigurationsdatei (config) benötigt, die ebenfalls im Ordner .ssh gespeichert wird. In Windows lässt sich diese Datei wie folgt erzeugen: fsutil file createnew "%HOMEPATH%/.ssh/config" 0.

4. SSH-Zugänge konfigurieren

Nach der Erstellung der config-Datei, muss diese bearbeitet werden, um den erwähnten Trick anzuwenden. Eine beispielhafte Konfiguration sieht wie folgt aus:

# Cool Company
Host github-cool-company
  HostName github.com
  User git
  IdentityFile /C/Users/Benny/.ssh/cool_company
 
# Awesome Company  
Host github-awesome-company
  HostName github.com
  User git
  IdentityFile /C/Users/Benny/.ssh/awesome_company
 
# My private Account
Host github.com
  HostName github.com
  User git
  IdentityFile /C/Users/Benny/.ssh/id_rsa

5. Git-Repository auschecken

Hat man alle Konfigurationen erstellt und verschiedene Private Keys (z.B. id_rsa, awesome_company, etc.) erstellt, so kann man damit beginnen, diese Keys zu benutzen. Ein Beispiel für ein GitHub-Checkout würde mit unserer Beispiel-Konfiguration wie folgt aussehen: git clone git@github-cool-company:cool-company/cool-project.git.

Repository-Config

Arbeitet man viel auf der Kommandozeile mit Git, so sollte man sicherstellen, dass in einem Git-Repository in der Datei .git/config die Pfade auch entsprechend gesetzt sind. Andernfalls kann es zur Fehlermeldung: Could not read from remote repository kommmen, sofern man git pull origin master oder ähnliche Kommandos ausführt.

Beispiel:

[remote "origin"]
  url = git@github-cool-company:cool-company/mars.git
  fetch = +refs/heads/*:refs/remotes/origin/*

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.