Ich versuche auszuführen, git clone
ohne dass ssh den Schlüssel des Repository-Hosts überprüft. Ich kann es von ssh so machen:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
Gibt es eine Möglichkeit, die gleichen ssh-Optionen an den Befehl git clone zu übergeben?
Bearbeiten: Es gibt eine Einschränkung, die ich nicht ändern kann, ~/.ssh/config
oder andere Dateien auf diesem Computer.
Antworten:
Fügen Sie sie Ihrem hinzu
~/.ssh/config
:Der
Host
Eintrag ist das, was Sie in der Befehlszeile angeben, und derHostName
ist der wahre Hostname. Sie können identisch sein oder derHost
Eintrag kann ein Alias sein. DerUser
Eintrag wird verwendet, wenn Sie ihn nichtuser@
in der Befehlszeile angeben .Wenn Sie dies in der Befehlszeile konfigurieren müssen, legen Sie die
GIT_SSH
Umgebungsvariable so fest, dass sie auf ein Skript mit Ihren Optionen verweist.quelle
GIT_SSH
Umgebungsvariable.Das kürzlich veröffentlichte Git 2.3 unterstützt eine neue Variable "GIT_SSH_COMMAND", mit der ein Befehl WITH-Parameter definiert werden kann.
quelle
git clone
oder ist der Code korrekt?Eine weitere Option zur Angabe verschiedener Schlüssel ist
git config core.sshCommand
git 2.10 + (Q3 2016).Dies ist eine Alternative zu der in beschriebenen Umgebungsvariablen Boris ‚s Antwort )
Siehe Commit 3c8ede3 (26. Juni 2016) von Nguyễn Thái Ngọc Duy (
pclouds
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit dc21164 , 19. Juli 2016)Es bedeutet das
git clone
kann:Wenn Sie dies für alle Repos anwenden möchten , wie user1300959 in den Kommentaren hinzufügt , würden Sie eine globale Konfiguration verwenden.
quelle
git clone
- in diesem Fall möchten Sie möglicherweise den Befehl git ssh global konfigurieren:git config --global core.sshCommand ...
Hier ist ein kniffliges Beispiel für die Übergabe der ssh-Argumente mithilfe der Variablen GIT_SSH:
Hinweis: Über den Zeilen befinden sich Terminalbefehlszeilen, die Sie in Ihr Terminal einfügen sollten. Es wird eine Datei ssh erstellt , sie ausführbar machen und ausführen.
Wenn Sie die Option für den privaten Schlüssel übergeben möchten, überprüfen Sie bitte, wie Sie git mitteilen, welcher private Schlüssel verwendet werden soll. .
quelle
$*
und"$@"
scheinen zu funktionieren. Normalerweise benutze ich"$@"
, da der andere veraltet zu sein scheint. Gibt es einen Grund,$*
in diesem Fall zu bevorzugen ?Konfiguration auf Repository-Ebene, ohne die Einstellungen auf Systemebene zu beeinflussen
Ich konsolidiere die bereits verfügbaren Antworten und wähle die folgenden Schritte. Dadurch wird sichergestellt, dass sich die Konfigurationsänderungen nicht auf Computerebene auswirken, sondern nur auf das Repository, an dem gearbeitet wird. Dies ist in meinem Fall erforderlich, da mein Skript auf einem gemeinsam genutzten Bamboo-Agenten ausgeführt werden muss.
1.Klonen Sie das Repository nach dem
GIT_SSH_COMMAND
Ansatz.2. Navigieren Sie nach dem Klonen in das Repository-Verzeichnis.
3.Stellen Sie die
core.sshCommand
Konfiguration so ein, dass alle zukünftigen Aufrufe wie gewohnt nur mit Git-Befehlen ausgeführt werden können, wobei jedoch die bereitgestellten Git-Optionen intern verwendet werden.quelle
core.sshCommand
, die ich oben erwähnt habe. Upvoted.Ich denke, dass Update git auf eine Version> = 2.3 und Verwendung
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
die Wettoption ist, aber wenn es nicht möglich ist, gab @ josh-lee eine gute Option, aber bitte aktualisieren Sie Ihre Antwort, indem Sie die ssh-Konfigurationsdatei einrücken.quelle
Dieses Problem wurde behoben, indem die folgenden Schritte in der Fenstermaschine ausgeführt wurden: -
Erstellen Sie die Konfigurationsdatei im Ordner C: \ Users \ username.ssh.
Fügen Sie die folgende Zeile zu einer Konfigurationsdatei hinzu.
dann versuchen Sie es erneut.
quelle