Angenommen, Ihr .ssh
Verzeichnis enthält 30 Schlüssel (15 private und 15 öffentliche).
Wo in Git kann man überprüfen, welche verwendet wird, um eine Verbindung zu einem bestimmten Remote-Repository herzustellen?
Angenommen, Ihr .ssh
Verzeichnis enthält 30 Schlüssel (15 private und 15 öffentliche).
Wo in Git kann man überprüfen, welche verwendet wird, um eine Verbindung zu einem bestimmten Remote-Repository herzustellen?
Antworten:
Der folgende Eintrag in der .ssh/config
Datei löst das Problem
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Wo ~/.ssh/whatever
ist ein Pfad zu Ihrem privaten Schlüssel?
Zusätzlich können Benutzer und Host von abgeholt werden
git push git@git.assembla.com:repo_name.git
^__ ^_______________
user host
Wenn Sie ssh im ausführlichen Modus ausführen ssh -v user@host
, wird eine große Menge an Debugging-Informationen gedruckt, die auch Details zu den Schlüsseldateien enthalten, die für die Anmeldung versucht werden.
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 332
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Wenn Sie dies nun mit Schritt 4 auf Gits eigener SSH- Hilfeseite kombinieren , ssh -vT git@github.com
können Sie die Antwort erhalten.
Hinweis: Sie können den -i
Schalter auch verwenden , um ssh während der Befehlsausführung mitzuteilen, welche Schlüsseldatei verwendet werden soll.
ssh -vv user@host 2> >(grep Offering)
folgt zu finden: - Dies erleichtert die Arbeit. Die letzte Datei sollte der öffentliche Schlüssel sein. Zum Beispiel:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
github
ist nicht dasselbe wie git
.
Sofern nicht auf dem angegeben .ssh/config
, wird die standardmäßige private Schlüsseldatei verwendet.
Die Standarddatei ist ~/.ssh/id_rsa
oder ~/.ssh/id_dsa
oder ~/.ssh/identity
abhängig von der Protokollversion.
Da git
nur eine ssh
Verbindung verwendet wird, wird der Schlüssel ssh
verwendet, der für die Verbindung zum Remote-Host verwendet wird. ~/.ssh/config
Einzelheiten finden Sie in der Datei. Der host
Block verwendet die IdentityFile
Direktive, um den zu verwendenden privaten Schlüssel anzugeben. Die ssh_config(5)
Manpage enthält alle Details.
/etc/ssh/ssh_config
/etc/ssh_config
was eine Datei voller kommentierter Einträge zu sein scheint
~/.ssh/config
selbst erschaffen .
Ich würde sagen, am praktischsten für meinen Geschmack wäre:
GIT_SSH_COMMAND='ssh -v' git …
Abhängig von den Umständen kann es natürlich von Vorteil sein, es nur in die aktuelle SHELL-Umgebung zu exportieren, damit Sie es nicht jedes Mal manuell voranstellen müssen. Dann wäre es so:
export GIT_SSH_COMMAND='ssh -v'
git …
- Wie bereits erwähnt man git
, gibt es einige Umgebungsvariablen, die sich bei Verwendung von SSH auf den Betrieb von Git auswirken würden. Laut man ssh
können Sie einige Debugging-Informationen bei der Bereitstellung der -v
Option erhalten (nicht nur, sondern lesen Sie auch das Handbuch, wenn Sie neugierig auf mehr sind).
Welcher Schlüssel wird verwendet?
In der Ausgabe würden Sie etwas sehen wie ...
debug1: Offering public key: …
… Welches ist die Antwort auf Ihre Frage.
set GIT_SSH_COMMAND=ssh -v
. Dies half mir herauszufinden, dass der ssh-config Inlcude-Path unter Windows ungefähr so aussehen sollte: Include /C/Users/YourUserName.ssh/config
Um ssh und damit git zu erstellen, verwenden Sie eine Konfigurationsdatei, die dann beispielsweise einen HOST *
Eintrag verwendet, um die Identitätsdatei anzugeben, die git / ssh verwendet.
Dies mag ein Super-Edge sein, aber nachdem ssh -vT git@github.com
es ausgeführt wurde, zeigte es mir, dass /root/.ssh
nach den Schlüsseln gesucht wurde. Ich hatte erwartet, dass es mein Home-Verzeichnis überprüft, und dann wurde mir klar, dass ich als root angemeldet war!
ssh
Art der Befragung die richtige Lösung. Vielen Dank.
Bearbeiten Sie auf dem Remote-Server die Datei sshd_config, ändern Sie LogLevel von INFO in VERBOSE und starten Sie ssh neu.
Jetzt enthält Ihre Protokolldatei den Fingerabdruck des Schlüssels, mit dem jeder Benutzer authentifiziert wurde.
Unter Ubuntu sind diese Dateien:
/etc/ssh/sshd_config
/var/log/auth.log
aber sie können auf einer anderen Distribution unterschiedlich sein. Google einfach nach ihrem Standort (einige verwenden zum Beispiel / var / log / secure).