So verwenden Sie einen anderen privaten SSH-Schlüssel für Git-Shell-Befehle

0
67

Die Verwendung von SSH-Schlüsseln ist sicherer als Passwörter, und das gilt für Git as Gut. Im Gegensatz zu einem Passwort ist es jedoch schwieriger, Ihren SSH-Schlüssel zu ändern oder mehrere Schlüssel zu verwalten. Durch Bearbeiten Ihrer SSH-Konfiguration können Sie jedoch eine Verbindung zu mehreren Git-Repositorys mit unterschiedlichen Schlüsseln herstellen.

Wie funktioniert SSH mit Git?

Git verwendet nicht nur Ihren privaten Schlüssel zur Authentifizierung, wenn Sie SSH anstelle von HTTPS verwenden, sondern stellt tatsächlich eine echte SSH-Verbindung zum Remote-Server her. Es tut dies im Hintergrund, sodass Sie möglicherweise nicht wissen, welche Befehle es ausführt, aber es verwendet ssh unter der Haube.

Da es Ihren standardmäßigen ssh-Befehl verwendet, verhält es sich so, als hätten Sie es gerade selbst ausgeführt und verwenden Ihren Standardschlüssel in ~/.ssh/id_rsa. Dies ist wahrscheinlich nicht das, was Sie möchten, wenn Sie dies hier lesen. Um es zu ändern, müssen Sie die SSH-Konfiguration bearbeiten, nicht Gits.< /p>

Neuen SSH-Schlüssel erstellen

Sie benötigen dafür in erster Linie einen, und dies ist ziemlich einfach. Führen Sie einfach ssh-keygen aus und geben Sie einen neuen Schlüsselnamen mit dem Flag -f an. Dadurch werden ein privater Schlüssel und ein öffentlicher Schlüssel mit der Erweiterung .pub erstellt.

ssh-keygen -t rsa -f ~/.ssh/github

Bearbeiten ~/.ssh/config

Die Konfigurationsdatei von SSH ermöglicht die Einstellung von “Hosts” die basierend auf dem, mit dem Sie sich verbinden, übereinstimmt und die Änderung der von ssh verwendeten Datei erlaubt.

Host github Hostname github.com IdentityFile ~/.ssh/id_rsa.github IdentitiesOnly ja Werbung

Auf diese Weise können Sie für alle Anfragen an github.com einen anderen SSH-Schlüssel als Ihren primären verwenden, aber was ist, wenn Sie zwei verschiedene Schlüssel für separate Git-Repositorys verwenden möchten? Zum Beispiel eine für Ihr Arbeitskonto und eine für Ihr persönliches Konto.

Nun, Sie müssen zwei Konfigurationen mit unterschiedlichen Namen definieren und denselben Host verwenden:

Host personal Hostname github.com IdentityFile ~/.ssh/githubpersonal IdentitiesOnly ja Host work Hostname github.com IdentityFile ~/.ssh/githubwork IdentitiesOnly ja

Normalerweise würde dies zu einer widersprüchlichen Konfiguration führen, aber Git bietet einen Weg, dies zu umgehen. Wenn Sie ein Remote-Repository wie Github mit Ihrem lokalen Repository verknüpft haben, löschen Sie es:

git remote remove origin

Anstatt github.com als Remote hinzuzufügen, ersetzen Sie es durch den Namen des Hosts in der SSH-Konfigurationsdatei. Git erkennt dies und verwendet diesen SSH-Host, um eine Verbindung herzustellen. Sie können separate Hosts pro Repository festlegen.

git remote add origin git@personal:username/repository.git

Manuelles Überschreiben

Wenn Sie sich nicht mit der SSH-Konfiguration herumschlagen oder sie nur vorübergehend überschreiben möchten, stellt Git auch die Umgebungsvariable GIT_SSH_COMMAND bereit. Sie können

GIT_SSH_COMMAND='ssh -i ~/.ssh/github -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

Alle Git-Befehle, die Sie danach in derselben Shell-Sitzung ausführen, verwenden dieses SSH Befehl anstelle des Standardbefehls. Sie können mit GIT_SSH auch eine ganz andere SSH-Binärdatei festlegen.