Próbuję zrobić git clone
skrypt bash, ale kiedy uruchamiam skrypt po raz pierwszy, a serwer nie jest jeszcze znany, skrypt nie działa. Mam coś takiego:
yes | git clone git@github.com:repo/repoo.git
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
Ale to ignoruje yes
. Czy wiesz, jak wymusić git clone
dodanie klucza do znanych hostów?
echo yes | git clone [email protected]:repo/repoo.git
?echo yes
Nie jest to dobre podejście: po raz drugi uruchomić komendę ssh nie zapyta, czy chcesz kontynuować, ponieważ klucz serwer będzie już znane.Odpowiedzi:
Dodaj następujące elementy do
~/.ssh/config
pliku:Wszystko, co korzysta z klienta open-ssh w celu ustanowienia zdalnej powłoki (podobnie jak klient git), powinno pomijać sprawdzanie klucza na github.com.
To właściwie zły pomysł, ponieważ jakakolwiek forma pomijania czeków (niezależnie od tego, czy automatycznie trafiasz tak, czy pomijasz czek), stwarza miejsce dla człowieka w środkowym kompromisie bezpieczeństwa. Lepszym sposobem byłoby pobranie i sprawdzenie odcisku palca i zapisanie go w
known_hosts
pliku przed uruchomieniem skryptu, który automatycznie się łączy.źródło
known_hosts
pliku .yes
wyjściay
. Potrzeby akceptacji klucza RSAyes
. Można spróbowaćyes yes | git clone [email protected]:repo/repoo.git
takyes
wyprowadzayes
zamiasty
.źródło
echo "yes" | ...
nie. Myślę, żegit
nie akceptuje rurociągów. Może tylko w niektórych wersjach?Uruchomienie
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
przed klonowaniem doda klucz i zapobiegnie wyświetleniu monitu.Oczywiście takie podejście jest również podatne na atak MITM.
źródło
Natrafiłem już na ten problem. Chociaż był na komputerze z systemem Windows, ale potrzebowaliśmy użyć ssh, aby połączyć się ze zdalnym hostem. Napotkaliśmy ten sam problem, że pierwsze połączenie zawsze kończyło się niepowodzeniem, ponieważ nie rozpoznawał kluczy.
Rozwiązałem go, łącząc się ręcznie, znajdując klucz rejestru i importując go na początku skryptu. W Linuksie powinien być ten sam ogólny pomysł: chcesz dodać ten serwer do listy zaufanych hostów, aby ssh nie pytał cię, czy ufasz mu za każdym razem.
Po połączeniu ręcznym znajdź plik klucza i dodaj go do pliku znanego_hosta. W ten sposób ssh przejrzy ten plik, zakładając, że wiesz, co robisz i kontynuujesz bez pytania o odcisk palca.
źródło