Wer auch immer für "Schließen" gestimmt hat, diese Frage - steht aus dem gleichen Grund in direktem Zusammenhang mit der Programmierung. Fragen zu GIT sind hier erlaubt
James Raitsev
1
Wohl ... Dies ist wirklich eine Super-User-Frage, das Problem hier ist nicht Git, sondern die Plattform, auf der es läuft. Sie können "in git" nicht auf das Problem überprüfen, da es git egal ist, es bezieht sich nur darauf, wie Sie ssh verwenden und wie es konfiguriert ist. Verwenden Sie ssh-agent, irgendeine Art von Schlüsselverwaltungssystem, welches Betriebssystem verwenden Sie, welche Version usw.?
Arafangion
Antworten:
66
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 [email protected]:repo_name.git
^__ ^_______________
user host
Wenn ich also einen anderen SSH-Schlüssel für einen anderen Host verwenden möchte, würde ich das gleiche nach dem ersten wiederholen? Bezieht sich die Identitätsdatei auf den ersten Host davor?
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 [email protected]kö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.
Sie können auch die Standardfehlerausgabe des Befehls ssh durchsuchen, um die Schlüsseldatei wie 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
Gianfranco P.
1
githubist nicht dasselbe wie git.
ForeverWintr
9
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.
Hmm .. die Datei existiert nicht auf meinem System. Sollte es?
James Raitsev
1
@JAM Welches Betriebssystem verwenden Sie? Manchmal ist die Konfigurationsdatei auch um/etc/ssh/ssh_config
Ich bin auf MACOS. Gefunden, /etc/ssh_configwas eine Datei voller kommentierter Einträge zu sein scheint
James Raitsev
@sarnold Du könntest dich ~/.ssh/configselbst erschaffen .
Xdazz
5
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).
JA. Dies sollte die akzeptierte Antwort sein. Verwenden Sie:, damit es unter Windows CMD (ugh) funktioniert 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.
icyerasor
4
Dies mag ein Super-Edge sein, aber nachdem ssh -vT [email protected]es 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!
Diese Technik ist unter anderem die gleiche sshArt der Befragung die richtige Lösung. Vielen Dank.
Eigenfeld
1
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).
Antworten:
Der folgende Eintrag in der
.ssh/config
Datei löst das ProblemWo
~/.ssh/whatever
ist ein Pfad zu Ihrem privaten Schlüssel?Zusätzlich können Benutzer und Host von abgeholt werden
quelle
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.Wenn Sie dies nun mit Schritt 4 auf Gits eigener SSH- Hilfeseite kombinieren ,
ssh -vT [email protected]
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.quelle
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 wiegit
.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.quelle
Da
git
nur einessh
Verbindung verwendet wird, wird der Schlüsselssh
verwendet, der für die Verbindung zum Remote-Host verwendet wird.~/.ssh/config
Einzelheiten finden Sie in der Datei. Derhost
Block verwendet dieIdentityFile
Direktive, um den zu verwendenden privaten Schlüssel anzugeben. Diessh_config(5)
Manpage enthält alle Details.quelle
/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:
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:
- Wie bereits erwähnt
man git
, gibt es einige Umgebungsvariablen, die sich bei Verwendung von SSH auf den Betrieb von Git auswirken würden. Lautman 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).In der Ausgabe würden Sie etwas sehen wie ...
… Welches ist die Antwort auf Ihre Frage.
quelle
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 einenHOST *
Eintrag verwendet, um die Identitätsdatei anzugeben, die git / ssh verwendet.Dies mag ein Super-Edge sein, aber nachdem
ssh -vT [email protected]
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!quelle
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:
aber sie können auf einer anderen Distribution unterschiedlich sein. Google einfach nach ihrem Standort (einige verwenden zum Beispiel / var / log / secure).
quelle