Jadi, saya sedang mencari cara biasa untuk mem-bypass interaksi manual host yang tidak dikenal dalam mengkloning git repo seperti yang ditunjukkan di bawah ini:
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)?
Perhatikan sidik jari kunci RSA ...
Jadi, ini adalah hal SSH, ini akan bekerja untuk git atas SSH dan hanya hal-hal terkait SSH secara umum ...
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
Pertama, instal nmap pada driver harian Anda. nmap sangat membantu untuk hal-hal tertentu, seperti mendeteksi port terbuka dan ini-- memverifikasi sidik jari SSH secara manual. Tapi, kembali ke apa yang kita lakukan.
Baik. Saya entah dikompromikan di beberapa tempat dan mesin saya sudah memeriksanya - atau penjelasan yang lebih masuk akal dari segala sesuatu yang keren adalah apa yang terjadi.
'Sidik jari' itu hanyalah sebuah string yang dipersingkat dengan algoritma satu arah untuk kenyamanan manusia kita dengan risiko lebih dari satu string menyelesaikan ke dalam sidik jari yang sama. Itu terjadi, mereka disebut tabrakan.
Apapun, kembali ke string asli yang bisa kita lihat dalam konteks di bawah ini.
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
Jadi, sebelumnya, kami memiliki cara untuk meminta bentuk identifikasi dari tuan rumah asli.
Pada titik ini kami secara manual sama rentannya dengan otomatis - kecocokan string, kami memiliki data dasar yang membuat sidik jari, dan kami dapat meminta data dasar itu (mencegah tabrakan) di masa mendatang.
Sekarang untuk menggunakan string dengan cara yang mencegah bertanya tentang keaslian host ...
File known_hosts dalam hal ini tidak menggunakan entri plaintext. Anda akan tahu entri hash ketika Anda melihatnya, mereka terlihat seperti hash dengan karakter acak, bukan xyz.com atau 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==
Baris komentar pertama muncul dengan marah - tetapi Anda dapat menyingkirkannya dengan redirect sederhana melalui konvensi ">" atau ">>".
Karena saya sudah melakukan yang terbaik untuk mendapatkan data yang tidak ternoda untuk digunakan untuk mengidentifikasi "host" dan kepercayaan, saya akan menambahkan identifikasi ini ke file known_hosts saya di direktori ~ / .ssh saya. Karena sekarang akan diidentifikasi sebagai host yang dikenal, saya tidak akan mendapatkan prompt yang disebutkan di atas ketika Anda masih muda.
Terima kasih telah bertahan dengan saya, ini dia. Saya menambahkan kunci RSA bitbucket sehingga saya dapat berinteraksi dengan repositori git saya di sana dengan cara non-interaktif sebagai bagian dari alur kerja CI, tetapi apa pun yang Anda lakukan apa yang Anda inginkan.
#!/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
Jadi, begitulah cara Anda tetap perawan untuk hari ini. Anda dapat melakukan hal yang sama dengan github dengan mengikuti petunjuk serupa di waktu Anda sendiri.
Saya melihat begitu banyak posting stack overflow yang memberitahu Anda untuk menambahkan kunci secara terprogram tanpa memeriksa. Semakin banyak Anda memeriksa kunci dari mesin yang berbeda di jaringan yang berbeda, semakin banyak kepercayaan yang dapat Anda miliki bahwa host adalah yang dikatakannya - dan itulah yang terbaik yang dapat Anda harapkan dari lapisan keamanan ini.
SALAH
ssh -oStrictHostKeyChecking = tidak ada nama host [perintah]
SALAH
ssh-keyscan -t rsa -H hostname >> ~ / .ssh / known_hosts
Tolong jangan lakukan salah satu dari hal-hal di atas. Anda diberi kesempatan untuk meningkatkan peluang Anda menghindari seseorang yang menguping transfer data Anda melalui seorang pria di tengah serangan - ambil kesempatan itu. Perbedaannya adalah memverifikasi bahwa kunci RSA yang Anda miliki adalah salah satu server yang bonafid dan sekarang Anda tahu cara mendapatkan informasi itu untuk membandingkannya sehingga Anda dapat mempercayai koneksi tersebut. Ingatlah bahwa lebih banyak perbandingan dari berbagai komputer & jaringan biasanya akan meningkatkan kemampuan Anda untuk mempercayai koneksi.