Próbuję uruchomić git clone
bez ssh sprawdzania klucza hosta repozytorium. Mogę to zrobić z ssh w ten sposób:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
Czy istnieje sposób, aby przekazać te same opcje ssh do polecenia git clone?
Edycja: istnieje ograniczenie, którego nie mogę modyfikować ~/.ssh/config
ani żadnych innych plików na tym komputerze.
Odpowiedzi:
Dodaj je do
~/.ssh/config
:Host
Wpis jest co można określić w wierszu poleceń, aHostName
jest prawdziwa nazwa hosta. Mogą być takie same lubHost
wpis może być aliasem.User
Pozycja jest używana, jeśli nie podaszuser@
w wierszu poleceń.Jeśli musisz to skonfigurować w wierszu poleceń, ustaw
GIT_SSH
zmienną środowiskową tak, aby wskazywała na skrypt z twoimi opcjami.źródło
GIT_SSH
zmiennej środowiskowej.Niedawno wydany git 2.3 obsługuje nową zmienną „GIT_SSH_COMMAND”, której można użyć do zdefiniowania parametrów polecenia Z.
źródło
git clone
czy kod jest poprawny?Inną opcją umożliwiającą określenie różnych kluczy jest
git config core.sshCommand
git 2.10 + (III kwartał 2016 r.).Jest to alternatywa do zmiennej środowiskowej opisaną w Boris „s odpowiedzi )
Zobacz commit 3c8ede3 (26 czerwca 2016) autorstwa Nguyễn Thái Ngọc Duy (
pclouds
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu dc21164 , 19 lipca 2016 r.)Oznacza to, że
git clone
może to być:Jeśli chcesz zastosować to do wszystkich repozytoriów , jak dodaje w komentarzach user1300959 , użyj konfiguracji globalnej.
źródło
git clone
- w tym przypadku możesz chcieć skonfigurować polecenie git ssh globalnie:git config --global core.sshCommand ...
Oto podstępny przykład przekazywania argumentów ssh przy użyciu zmiennej GIT_SSH:
Uwaga: powyższe wiersze to wiersze poleceń terminala, które należy wkleić do terminala. Stworzy plik ssh , uczyni go wykonywalnym i uruchomi go.
Jeśli chcesz przekazać opcję klucza prywatnego, sprawdź: Jak powiedzieć gitowi, którego klucza prywatnego użyć? .
źródło
$*
i"$@"
wydają się działać. Zwykle używam"$@"
, ponieważ drugi wydaje się być przestarzały. Czy jest powód, aby preferować$*
ten przypadek?Konfiguracja na poziomie repozytorium bez wpływu na ustawienia na poziomie systemu
Podsumowując już dostępne odpowiedzi wybieram poniższe kroki. Gwarantuje to, że zmiany konfiguracji nie będą miały wpływu na poziomie maszyny, ale tylko na repozytorium, nad którym pracujesz. Jest to potrzebne w moim przypadku, ponieważ mój skrypt musi być wykonywany na współużytkowanym agencie Bamboo.
1. sklonuj repozytorium zgodnie z
GIT_SSH_COMMAND
podejściem.2. Po sklonowaniu przejdź do katalogu repozytorium.
3. Ustaw
core.sshCommand
konfigurację tak, aby wszystkie przyszłe wywołania mogły być po prostu uruchamiane za pomocą poleceń git, jak zwykle, ale wewnętrznie konsumując dostarczone opcje git.źródło
core.sshCommand
, o czym wspomniałem powyżej. Głosowano za.Myślę, że aktualizacja gita do wersji> = 2.3 i użycie
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
jest opcją zakładu, ale jeśli nie jest to możliwe, @ josh-lee dał dobrą opcję, ale proszę zaktualizuj swoją odpowiedź, wciskając plik konfiguracyjny ssh.źródło
Ten problem został rozwiązany, wykonując następujące kroki na komputerze z systemem Windows: -
Utwórz plik konfiguracyjny w folderze C: \ Users \ username.ssh.
dodaj następujący wiersz do pliku konfiguracyjnego.
następnie spróbuj ponownie.
źródło