Angenommen, Ihr .sshVerzeichnis 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 .sshVerzeichnis 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/configDatei löst das Problem
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Wo ~/.ssh/whateverist 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.comkönnen Sie die Antwort erhalten.
Hinweis: Sie können den -iSchalter 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
githubist nicht dasselbe wie git.
Sofern nicht auf dem angegeben .ssh/config, wird die standardmäßige private Schlüsseldatei verwendet.
Die Standarddatei ist ~/.ssh/id_rsaoder ~/.ssh/id_dsaoder ~/.ssh/identityabhängig von der Protokollversion.
Da gitnur eine sshVerbindung verwendet wird, wird der Schlüssel sshverwendet, der für die Verbindung zum Remote-Host verwendet wird. ~/.ssh/configEinzelheiten finden Sie in der Datei. Der hostBlock verwendet die IdentityFileDirektive, um den zu verwendenden privaten Schlüssel anzugeben. Die ssh_config(5)Manpage enthält alle Details.
/etc/ssh/ssh_config
/etc/ssh_configwas eine Datei voller kommentierter Einträge zu sein scheint
~/.ssh/configselbst 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 sshkönnen Sie einige Debugging-Informationen bei der Bereitstellung der -vOption 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/configUm 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.comes ausgeführt wurde, zeigte es mir, dass /root/.sshnach 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!
sshArt 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).