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/* |