ตอบใช่ในสคริปต์ทุบตี


24

ฉันกำลังพยายามทำgit cloneสคริปต์ทุบตี แต่ครั้งแรกที่ฉันเรียกใช้สคริปต์และเซิร์ฟเวอร์ไม่เป็นที่รู้จัก แต่สคริปต์ล้มเหลว ฉันมีสิ่งนี้:

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

yesแต่มันไม่สนใจ คุณรู้วิธีบังคับgit cloneให้เพิ่มคีย์ไปยังโฮสต์ที่รู้จักหรือไม่?


เกี่ยวกับecho yes | git clone git@github.com:repo/repoo.gitอะไร
asfallows

3
@asfallows, @Rafael: echo yesไม่ใช่วิธีที่ดี: ครั้งที่สองที่คุณเรียกใช้คำสั่ง ssh จะไม่ถามว่าคุณต้องการดำเนินการต่อหรือไม่เนื่องจากรหัสเซิร์ฟเวอร์จะถูกรู้จัก
Gilles 'หยุดความชั่วร้าย' ใน

คำตอบ:


21

เพิ่มสิ่งต่อไปนี้ใน~/.ssh/configไฟล์ของคุณ:

Host github.com
    StrictHostKeyChecking no

สิ่งใดก็ตามที่ใช้ไคลเอนต์ open-ssh เพื่อสร้างเชลล์ระยะไกล (โดยที่ไคลเอ็นต์ git ทำ) ควรข้ามการตรวจสอบคีย์ไปที่ github.com

นี่เป็นความคิดที่ไม่ดีเนื่องจากการข้ามการตรวจสอบทุกรูปแบบ (ไม่ว่าคุณจะกดใช่หรือข้ามการตรวจสอบในตอนแรก) จะสร้างที่ว่างสำหรับผู้ชายในการประนีประนอมความปลอดภัยระดับกลาง วิธีที่ดีกว่าคือการดึงและตรวจสอบลายนิ้วมือและเก็บไว้ในknown_hostsไฟล์ก่อนที่จะต้องเรียกใช้สคริปต์ที่เชื่อมต่อโดยอัตโนมัติ


2
ด้วยการตั้งค่าที่แข็งแกร่งในการดึงข้อมูลและตรวจสอบลายนิ้วมือและเก็บไว้ในknown_hostsไฟล์ก่อน
Gilles 'หยุดความชั่วร้าย' ใน

1
ขอบคุณมากสำหรับคำตอบของคุณฉันลงเอยด้วยการทำตามวิธีการเพิ่มการพิมพ์ลายนิ้วมือใน known_hosts มันเหมือน :) ปลอดภัยมากขึ้น
ราฟาเอล

โอ้ฉันใช้หุ่นเชิดเพื่อทำสิ่งนี้ หากมีใครสนใจที่จะใช้มันที่นี่เป็นสูตร: gist.github.com/1155725
Rafael

5

yesyเอาท์พุท yesอาร์เอสได้รับการยอมรับความต้องการที่สำคัญ คุณอาจจะลองyes yes | git clone git@github.com:repo/repoo.gitเพื่อyesเอาท์พุทแทนyesy


5
ด้วยเหตุผลบางอย่างที่ใช้ไม่ได้กับโคลนคอมไพล์สำหรับฉัน
Matt V.

ไม่เหมาะกับฉัน ยังecho "yes" | ...ไม่ได้ ฉันคิดว่าgitไม่ยอมรับการวางท่อ บางทีในบางรุ่นเท่านั้น?
udondan

3

การรันssh-keyscan -H github.com >> ~/.ssh/known_hostsก่อนการโคลนจะเพิ่มคีย์และป้องกันไม่ให้พรอมต์ปรากฏขึ้น

แน่นอนว่าวิธีการนี้ยังเสี่ยงต่อการถูกโจมตีจาก MITM


1

ฉันเคยพบปัญหานี้มาก่อน แม้ว่ามันจะเป็นเครื่อง Windows แต่เราจำเป็นต้องใช้ ssh เพื่อเชื่อมต่อกับโฮสต์ระยะไกล เราพบปัญหาเดียวกันกับที่การเชื่อมต่อครั้งแรกล้มเหลวเสมอเพราะไม่รู้จักปุ่มต่างๆ

ฉันแก้ไขมันด้วยการเชื่อมต่อด้วยตนเองและค้นหาคีย์รีจิสทรีและนำเข้าที่จุดเริ่มต้นของสคริปต์ ใน Linux ควรเป็นแนวคิดทั่วไปเดียวกัน: คุณต้องการเพิ่มเซิร์ฟเวอร์นี้ลงในรายการโฮสต์ที่เชื่อถือได้ดังนั้น ssh จะไม่ถามคุณว่าคุณเชื่อถือเขาทุกครั้งหรือไม่

เมื่อคุณเชื่อมต่อด้วยตนเองให้ค้นหาไฟล์คีย์และเพิ่มลงในไฟล์ known_hosts ของคุณ วิธีนี้ ssh จะตรวจสอบไฟล์นั้นสมมติว่าคุณรู้ว่ากำลังทำอะไรอยู่และดำเนินการต่อโดยไม่ถามคุณเกี่ยวกับลายนิ้วมือ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.