Przekazywanie opcji ssh do git clone

Próbuję uruchomić git clone bez sprawdzania przez ssh klucza hosta repozytorium. Mogę to zrobić z ssh tak:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host

Czy Jest jakiś sposób na przekazanie tych samych opcji ssh do polecenia git clone?

Edit: istnieje ograniczenie, którego nie mogę modyfikować ~/.ssh/config ani żadnych innych plików na tym komputerze.

 67
Author: Daniel Velkov, 2011-10-14

6 answers

Dodaj je do swojego ~/.ssh/config:

Host host
    HostName host
    User user
    SshOption1 Value1
    SshOption2 Value2

Wpis Host jest tym, co określisz w wierszu poleceń, a {[3] } jest prawdziwą nazwą hosta. Mogą być takie same lub wpis Host może być aliasem. Wpis User jest używany, jeśli nie podasz user@ w wierszu poleceń.

Jeśli musisz skonfigurować to w wierszu poleceń, Ustaw zmienną środowiskową GIT_SSH tak, aby wskazywała skrypt z opcjami.

 33
Author: Josh Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-23 21:57:10

Niedawno wydany git 2.3 obsługuje nową zmienną "GIT_SSH_COMMAND", która może być użyta do zdefiniowania polecenia z parametrami.

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host

$GIT_SSH_COMMAND ma pierwszeństwo przed $GIT_SSH i jest interpretowane przez powłokę, co pozwala na dodatkowe argumenty wliczony w cenę.

 87
Author: Boris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-15 15:09:05

Oto przykład jak przekazać Argumenty ssh używając zmiennej GIT_SSH:

$ echo 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh
$ chmod +x ssh
$ GIT_TRACE=1 GIT_SSH="$PWD/ssh" git clone user@host

uwaga: powyższe linie są wierszami poleceń terminala, które należy wkleić do terminala. Tworzy plik ssh, czyni go wykonywalnym i wykonuje go.

Jeśli chcesz przekazać opcję klucza prywatnego, Sprawdź jak powiedzieć gitowi, którego klucza prywatnego użyć?.

 18
Author: kenorb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 10:04:24

Inną opcją pozwalającą określić różne klucze jest git config core.sshCommand z git 2.10 + (Q3 2016)

Jest to alternatywa dla zmiennej środowiskowej opisanej w Borys 'S answer )

Zobacz commit 3c8ede3 (26 Jun 2016) by Nguyễn Thái Ngọc Duy (pclouds).
(dodany przez Junio C Hamano -- gitster -- in commit dc21164 , 19 Jul 2016)

Dodano nową zmienną konfiguracyjną core.sshCommand do określ jaką wartość GIT_SSH_COMMAND ma użyć dla każdego repozytorium.

Podobne do $GIT_ASKPASS lub $GIT_PROXY_COMMAND, czytamy również z najpierw plik konfiguracyjny, a następnie powrót do $GIT_SSH_COMMAND.

Jest to przydatne do wybierania różnych kluczy prywatnych ten sam host (np. github)

core.sshCommand:

Jeśli ta zmienna jest ustawiona, git fetch i git push będą używać podanego polecenia zamiast ssh, gdy będą musiały połączyć się ze zdalnym systemem.
Komenda jest w taka sama postać jak zmienna środowiskowa GIT_SSH_COMMAND i jest nadpisywana, gdy zmienna środowiskowa jest ustawiona.

Oznacza to, że git clone Może być:

cd /path/to/my/repo
git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' 
# later on
git clone host:repo.git

Jeśli chcesz zastosować to dla wszystkich repo, jak user1300959 dodaje w komentarzach, użyjesz globalnej konfiguracji

git config --global core.sshCommand ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
 13
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:51

Myślę, że update git do wersji >= 2.3 I use GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host jest opcją bet, ale jeśli nie jest to możliwe, @josh-lee dał dobrą opcję, ale proszę, zaktualizuj swoją odpowiedź wciskając plik konfiguracyjny SSH.

Host host
    HostName host
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
 2
Author: Jonathan Beber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-23 19:18:31

Ten problem został rozwiązany, wykonując następujące kroki w maszynie okien: -

  • Utwórz plik konfiguracyjny pod C:\Users\username.folder ssh.

  • Dodaj następujący wiersz do pliku konfiguracyjnego.

    host <HOST>
    hostname <HOSTNAME>
    user <USER_NAME>
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes
    port <PORT_NUMBER>
    KexAlgorithms +diffie-hellman-group1-sha1
    
  • Spróbuj jeszcze raz.

 0
Author: Ajay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-20 20:53:29