Rispondi sì in uno script bash


24

Sto cercando di eseguire uno git clonescript bash, ma la prima volta che eseguo lo script e il server non è noto, lo script non riesce. Ho qualcosa del genere:

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)? 

Ma sta ignorando il yes. Sai come forzare git clonel'aggiunta della chiave agli host conosciuti?


Che dire echo yes | git clone git@github.com:repo/repoo.git?
Asfallows

3
@asfallows, @Rafael: echo yesnon è un buon approccio: la seconda volta che si esegue il comando, ssh non chiederà se si desidera continuare perché la chiave del server sarà già nota.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


21

Aggiungi quanto segue al tuo ~/.ssh/configfile:

Host github.com
    StrictHostKeyChecking no

Qualsiasi cosa che usi il client open-ssh per stabilire una shell remota (come fa il client git) dovrebbe saltare i controlli chiave a github.com.

Questa è in realtà una cattiva idea poiché qualsiasi forma di saltare i controlli (se si preme automaticamente sì o salta il controllo in primo luogo) crea spazio per un uomo nel mezzo del compromesso di sicurezza. Un modo migliore sarebbe recuperare e convalidare l'impronta digitale e memorizzarla nel known_hostsfile prima di dover eseguire alcuni script che si connettono automaticamente.


2
Con una forte preferenza per recuperare e convalidare l'impronta digitale e memorizzarla nel known_hostsfile prima .
Gilles 'SO- smetti di essere malvagio' il

1
Grazie mille per la tua risposta, ho finito per seguire l'approccio di aggiungere l'impronta digitale in known_hosts. È come più sicuro :)
Rafael,

Oh, sto usando il burattino per farlo. Se qualcuno è interessato a usarlo ecco la ricetta: gist.github.com/1155725
Rafael

5

yesuscite y. Esigenze di accettazione delle chiavi RSA yes. Potresti provare yes yes | git clone git@github.com:repo/repoo.gitcosì yesoutput yesinvece di y.


5
Per qualche ragione, per me non ha funzionato con il clone git.
Matt V.

Né ha funzionato per me. Inoltre echo "yes" | ...no. Penso gitche non accetti le tubazioni. Forse solo in qualche versione?
udondan,

3

L'esecuzione ssh-keyscan -H github.com >> ~/.ssh/known_hostsprima della clonazione aggiungerà la chiave e impedirà la visualizzazione del prompt.

Naturalmente questo approccio è anche vulnerabile a un attacco MITM.


1

Ho riscontrato questo problema prima. Anche se era su un computer Windows ma dovevamo usare ssh per connetterci a un host remoto. Ci siamo imbattuti nello stesso problema che la prima connessione ha sempre fallito perché non riconosceva le chiavi.

L'ho risolto collegandomi manualmente e trovando la chiave di registro e importandola all'inizio dello script. In Linux dovrebbe essere la stessa idea generale: vuoi aggiungere questo server a un elenco di host fidati in modo che ssh non ti chieda se ti fidi di lui ogni volta.

Una volta effettuata la connessione manuale, trova il file chiave e aggiungilo al file known_hosts. In questo modo ssh esaminerà quel file, supporrà di sapere cosa stai facendo e procederà senza chiederti l'impronta digitale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.