ดังนั้นฉันกำลังค้นหาวิธีการทางโลกีย์เพื่อข้ามการโต้ตอบด้วยตนเองของโฮสต์ที่ไม่เป็นที่รู้จักของการโคลน repo git ดังแสดงด้านล่าง:
brad@computer:~$ git clone git@bitbucket.org:viperks/viperks-api.git
Cloning into 'viperks-api'...
The authenticity of host 'bitbucket.org (104.192.143.3)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?
จดจำลายนิ้วมือคีย์ RSA ...
ดังนั้นนี่คือสิ่ง SSH นี้จะทำงานเพื่อคอมไพล์ SSH และเพียงแค่สิ่งที่เกี่ยวข้องกับ SSH โดยทั่วไป ...
brad@computer:~$ nmap bitbucket.org --script ssh-hostkey
Starting Nmap 7.01 ( https://nmap.org ) at 2016-10-05 10:21 EDT
Nmap scan report for bitbucket.org (104.192.143.3)
Host is up (0.032s latency).
Other addresses for bitbucket.org (not scanned): 104.192.143.2 104.192.143.1 2401:1d80:1010::150
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 1024 35:ee:d7:b8:ef:d7:79:e2:c6:43:9e:ab:40:6f:50:74 (DSA)
|_ 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40 (RSA)
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 42.42 seconds
ก่อนอื่นให้ติดตั้ง nmap บนไดรเวอร์รายวันของคุณ nmap มีประโยชน์อย่างมากสำหรับบางสิ่งเช่นการตรวจจับพอร์ตที่เปิดอยู่และนี่คือการตรวจสอบลายนิ้วมือ SSH ด้วยตนเอง แต่กลับไปที่สิ่งที่เรากำลังทำ
ดี. ฉันถูกประนีประนอมในหลาย ๆ สถานที่และเครื่องจักรที่ฉันตรวจสอบแล้ว - หรือคำอธิบายที่เป็นไปได้มากขึ้นสำหรับทุกสิ่งที่เกิดขึ้นคือสิ่งที่กำลังเกิดขึ้น
'ลายนิ้วมือ' นั้นเป็นเพียงสตริงที่สั้นลงด้วยอัลกอริทึมแบบทางเดียวเพื่อความสะดวกของมนุษย์เราที่มีความเสี่ยงที่จะมีการแก้ไขมากกว่าหนึ่งสายเป็นลายนิ้วมือเดียวกัน มันเกิดขึ้นพวกเขาถูกเรียกว่าการชน
โดยไม่คำนึงถึงกลับไปที่สตริงดั้งเดิมซึ่งเราสามารถดูได้ในบริบทด้านล่าง
brad@computer:~$ ssh-keyscan bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
no hostkey alg
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-129
bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-123
no hostkey alg
ดังนั้นก่อนเวลาเรามีวิธีขอรูปแบบการระบุจากโฮสต์เดิม
ณ จุดนี้เรามีความเสี่ยงด้วยตนเองโดยอัตโนมัติ - การจับคู่สตริงเรามีข้อมูลพื้นฐานที่สร้างลายนิ้วมือและเราสามารถขอข้อมูลฐานนั้น (ป้องกันการชน) ในอนาคต
ทีนี้ให้ใช้สายนั้นในวิธีที่ป้องกันการถามเกี่ยวกับความถูกต้องของโฮสต์ ...
ไฟล์ known_hosts ในกรณีนี้ไม่ใช้รายการข้อความธรรมดา คุณจะรู้ว่ารายการที่ถูกแฮชเมื่อคุณเห็นพวกมันดูเหมือนแฮ็คที่มีตัวอักษรสุ่มแทน xyz.com หรือ 123.45.67.89
brad@computer:~$ ssh-keyscan -t rsa -H bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
บรรทัดความคิดเห็นแรกแสดงขึ้นอย่างไม่พอใจ - แต่คุณสามารถกำจัดมันได้โดยการเปลี่ยนเส้นทางแบบง่าย ๆ ผ่านการประชุม ">" หรือ ">>"
เนื่องจากฉันได้พยายามอย่างเต็มที่เพื่อให้ได้ข้อมูลที่ไม่ทาสีเพื่อใช้ระบุ "โฮสต์" และความน่าเชื่อถือฉันจะเพิ่มการระบุนี้ไปยังไฟล์ known_hosts ของฉันในไดเรกทอรี ~ / .ssh ของฉัน เนื่องจากตอนนี้มันจะถูกระบุว่าเป็นโฮสต์ที่รู้จักกันฉันจะไม่ได้รับแจ้งดังกล่าวข้างต้นเมื่อคุณเป็นเด็ก
ขอบคุณที่ติดกับฉันไปเลย ฉันกำลังเพิ่มคีย์ bitbucket RSA เพื่อให้ฉันสามารถโต้ตอบกับที่เก็บคอมไพล์ของฉันในแบบที่ไม่ต้องมีการโต้ตอบซึ่งเป็นส่วนหนึ่งของเวิร์กโฟลว์ CI แต่สิ่งที่คุณทำในสิ่งที่คุณต้องการ
#!/bin/bash
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.old && echo "|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==" >> ~/.ssh/known_hosts
นั่นคือวิธีที่คุณยังคงบริสุทธิ์ในวันนี้ คุณสามารถทำเช่นเดียวกันกับ GitHub โดยทำตามคำแนะนำที่คล้ายกันในเวลาของคุณเอง
ฉันเห็นโพสต์โอเวอร์โฟลว์จำนวนมากที่บอกให้คุณเพิ่มคีย์แบบสุ่มโดยไม่มีการตรวจสอบใด ๆ ยิ่งคุณตรวจสอบกุญแจจากเครื่องที่แตกต่างกันในเครือข่ายที่ต่างกันก็ยิ่งเชื่อใจได้มากขึ้นว่าเครื่องแม่ข่ายนั้นเป็นเครื่องที่บอกว่าเป็น - และนั่นคือสิ่งที่ดีที่สุดที่คุณคาดหวังจากการรักษาความปลอดภัยระดับนี้
ไม่ถูกต้อง
ssh -oStrictHostKeyChecking = ไม่มีชื่อโฮสต์ [คำสั่ง]
ไม่ถูกต้อง
ssh-keyscan -t rsa -H ชื่อโฮสต์ >> ~ / .ssh / known_hosts
กรุณาอย่าทำอย่างใดอย่างหนึ่งดังกล่าวข้างต้น คุณได้รับโอกาสในการเพิ่มโอกาสในการหลีกเลี่ยงการแอบถ่ายโอนข้อมูลของคุณผ่านชายคนหนึ่งในการโจมตีกลาง - ใช้โอกาสนั้น ข้อแตกต่างคือการตรวจสอบว่าคีย์ RSA ที่คุณมีคือเซิร์ฟเวอร์ bona fide หนึ่งและตอนนี้คุณรู้วิธีรับข้อมูลนั้นเพื่อเปรียบเทียบพวกเขาเพื่อให้คุณสามารถเชื่อถือการเชื่อมต่อ เพียงจำการเปรียบเทียบเพิ่มเติมจากคอมพิวเตอร์และเครือข่ายที่แตกต่างกันมักจะเพิ่มความสามารถในการเชื่อถือการเชื่อมต่อ