Bir bash betiğinde evet cevabı


24

git cloneBir bash betiği ile bir yalak yapmayı deniyorum , ancak betiği ve sunucuyu ilk çalıştırdığımda henüz komut dosyası başarısız oluyor. Böyle bir şeyim var:

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

Ama bu görmezden geliyor yes. git cloneAnahtarı bilinen bilgisayarlara eklemeye nasıl zorlanacağını biliyor musunuz ?


Ne hakkında echo yes | git clone git@github.com:repo/repoo.git?
asfallows

3
@asfallows, @Rafael: echo yesiyi bir yaklaşım değil: komutu ikinci kez çalıştırdığınızda, ssh devam etmek isteyip istemediğinizi sormaz çünkü sunucu anahtarı zaten bilinecektir.
Gilles 'SO- kötülük' dur '16

Yanıtlar:


21

Aşağıdakileri ~/.ssh/configdosyanıza ekleyin :

Host github.com
    StrictHostKeyChecking no

Uzak bir kabuk oluşturmak için open-ssh istemcisini kullanan herhangi bir şey (git istemcisi ile birlikte) github.com'a yapılan önemli denetimleri atlamalıdır.

Bu aslında kötü bir fikir çünkü çekleri atlamanın herhangi bir şekli (otomatik olarak evet'e çarptığınızda ya da çekimi ilk etapta atladıysanız) orta güvenlikteki bir adam için yer açıyor. known_hostsOtomatik olarak bağlanan bazı komut dosyalarını çalıştırmadan önce parmak izini alıp doğrulamak ve dosyada saklamak daha iyi bir yol olacaktır .


2
Parmak izini almak ve doğrulamak ve daha known_hostsönce dosyada saklamak için güçlü bir tercih .
Gilles 'SO- kötülük' dur '16

1
Cevabınız için çok teşekkür ederim, bilinen_topa parmak izi ekleme yaklaşımını izleyerek sona erdi. Daha güvenli gibi :)
Rafael

Oh, bunu yapmak için kukla kullanıyorum. Birisi onu kullanmakla ilgileniyorsa, tarifi: gist.github.com/1155725
Rafael

5

yesçıktılar y. RSA anahtar kabul ihtiyaçları yes. Sen deneyebilirsiniz yes yes | git clone git@github.com:repo/repoo.gitböylece yesçıktılar yesyerine y.


5
Nedense, bu benim için git klonuyla işe yaramadı.
Matt V.

Ne benim için çalıştı. Ayrıca echo "yes" | ...değil. Bence gitboruları kabul etmiyor. Belki sadece bazı sürümlerinde?
udondan

3

ssh-keyscan -H github.com >> ~/.ssh/known_hostsKlonlamadan önce çalıştırma anahtarı ekler ve istemin görünmesini önler.

Elbette bu yaklaşım aynı zamanda bir MITM saldırısına açıktır.


1

Bu konuyla daha önce karşılaştım. Windows makinede olmasına rağmen uzaktaki bir ana bilgisayara bağlanmak için ssh kullanmamız gerekiyordu. İlk bağlantının daima başarısız olduğu aynı problemle karşılaştık çünkü anahtarları tanımayacaktı.

El ile bağlanıp kayıt defteri anahtarını bularak ve betiğin başında içe aktararak çözdüm. Linux'ta da aynı genel fikir olmalı: Bu sunucuyu güvenilir bir ana bilgisayar listesine eklemek istiyorsunuz, böylece ssh size her zaman güvenip güvenmediğinizi sormaz.

Manuel olarak bağlandığınızda, anahtar dosyasını bulun ve bilinen_host dosyalarınıza ekleyin. Bu şekilde ssh bu dosyaya bakar, ne yaptığınızı bildiğinizi varsayar ve parmak izini sormadan devam edersiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.