इसलिए, मैं नीचे दिखाए गए एक git रेपो की क्लोनिंग के unkown होस्ट मैनुअल इंटरैक्शन को बायपास करने के लिए एक सांसारिक तरीके की खोज कर रहा था:
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
सबसे पहले, अपने दैनिक ड्राइवर पर नैम्प स्थापित करें। नैम्प कुछ चीजों के लिए अत्यधिक मददगार है, जैसे खुले बंदरगाहों का पता लगाना और यह-- मैन्युअल रूप से 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
इसलिए, समय से पहले, हमारे पास मूल मेजबान से पहचान का एक तरीका पूछने का एक तरीका है।
इस बिंदु पर हम मैन्युअल रूप से स्वचालित रूप से असुरक्षित हैं - स्ट्रिंग्स मैच, हमारे पास आधार डेटा है जो फिंगरप्रिंट बनाता है, और हम भविष्य में उस आधार डेटा (टकराव को रोकने) के लिए पूछ सकते हैं।
अब उस तार का उपयोग इस तरह से करना है कि एक मेजबान प्रामाणिकता के बारे में पूछने से रोकता है ...
इस मामले में ज्ञात_होस्ट फ़ाइल सादी एंटेक्स्ट प्रविष्टियों का उपयोग नहीं करती है। जब आप उन्हें देखते हैं, तो आपको हैशेड प्रविष्टियां पता होंगी, वे 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==
पहली टिप्पणी लाइन infuriatingly से पता चलता है - लेकिन आप ">" या ">>" सम्मेलन के माध्यम से एक साधारण पुनर्निर्देशन से छुटकारा पा सकते हैं।
जैसा कि मैंने "होस्ट" और विश्वास की पहचान करने के लिए उपयोग किए जाने वाले डेटा को प्राप्त करने के लिए अपनी पूरी कोशिश की है, मैं इस पहचान को मेरी ~ / .shsh निर्देशिका में मेरी ज्ञात_होस्ट फ़ाइल में जोड़ दूंगा। चूँकि अब इसे एक ज्ञात होस्ट के रूप में पहचाना जाएगा, इसलिए जब आप एक यंगस्टर थे, तो मुझे उपर्युक्त संकेत नहीं मिलेगा।
मेरे साथ चिपके रहने के लिए धन्यवाद, यहाँ आप जाते हैं। मैं बिटबकेट RSA कुंजी जोड़ रहा हूं ताकि मैं अपने git रिपॉजिटरी के साथ एक गैर-इंटरैक्टिव तरीके से 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
तो, यह है कि आप आज के लिए एक कुंवारी कैसे रहते हैं। आप अपने समय पर इसी तरह के निर्देशों का पालन करके जीथब के साथ भी कर सकते हैं।
मैंने इतने सारे स्टैक ओवरफ्लो पोस्ट देखे जो आपको प्रोग्राम को किसी भी प्रकार की जाँच के बिना आँख बंद करके जोड़ने के लिए कहेंगे। जितना अधिक आप अलग-अलग नेटवर्क पर विभिन्न मशीनों से कुंजी की जांच करते हैं, उतना ही अधिक भरोसा आपको हो सकता है कि मेजबान वह है जो यह कहता है - और यह सबसे अच्छा है जो आप इस सुरक्षा की परत से उम्मीद कर सकते हैं।
गलत
ssh -oStrictHostKeyChecking = कोई होस्टनाम [आदेश]
गलत
ssh-keyscan -t rsa -H hostname >> ~ / .ssh / ज्ञात_होस्ट
कृपया उपरोक्त चीजों में से कोई भी काम न करें। आपको मध्य आक्रमण में एक व्यक्ति के माध्यम से अपने डेटा स्थानान्तरण से बचने की संभावना को बढ़ाने का अवसर दिया जाता है - उस अवसर को लें। अंतर शाब्दिक रूप से सत्यापित कर रहा है कि आपके पास RSA कुंजी bona fide सर्वर में से एक है और अब आप जानते हैं कि उन्हें तुलना करने के लिए उस जानकारी को कैसे प्राप्त करें ताकि आप कनेक्शन पर भरोसा कर सकें। बस याद रखें कि विभिन्न कंप्यूटरों और नेटवर्क से अधिक तुलना आमतौर पर कनेक्शन पर भरोसा करने की आपकी क्षमता में वृद्धि करेगी।