Bagaimana saya bisa menambahkan kunci host ke known_hosts
file SSH dengan aman?
Saya menyiapkan mesin pengembangan, dan saya ingin (misalnya) mencegah git
dari meminta ketika saya mengkloning repositori github.com
menggunakan SSH.
Saya tahu bahwa saya dapat menggunakan StrictHostKeyChecking=no
(misalnya jawaban ini ), tetapi itu tidak aman.
Sejauh ini, saya telah menemukan ...
GitHub menerbitkan sidik jari kunci SSH mereka di https://help.github.com/articles/github-s-ssh-key-fingerprints/
Saya dapat menggunakan
ssh-keyscan
untuk mendapatkan kunci hostgithub.com
.
Bagaimana saya menggabungkan fakta-fakta ini? Diberi daftar sidik jari yang telah ssh-keyscan
diisi sebelumnya , bagaimana cara saya memverifikasi bahwa output dapat ditambahkan ke known_hosts
file?
Saya kira saya bertanya yang berikut:
Bagaimana cara saya mendapatkan sidik jari untuk kunci yang dikembalikan ssh-keyscan
?
Mari kita asumsikan bahwa saya sudah menjadi MITM-ed untuk SSH, tetapi saya dapat mempercayai halaman GitHub HTTPS (karena memiliki rantai sertifikat yang valid).
Itu berarti bahwa saya memiliki beberapa kunci host (tersangka) SSH (dari ssh-keyscan
) dan beberapa sidik jari kunci (tepercaya). Bagaimana saya memverifikasi satu terhadap yang lain?
Terkait: bagaimana cara hash bagian host dari output dari ssh-keyscan
? Atau bisakah saya mencampur host yang di-hash / tidak di-host known_hosts
?
StrictHostKeyChecking=no
rentan terhadap MITM. Apakahssh-keyscan
aman terhadap MITM?Jawaban:
Bagian terpenting dari "aman" menambahkan kunci ke
known_hosts
file adalah untuk mendapatkan sidik jari kunci dari administrator server. Sidik jari kunci akan terlihat seperti ini:Dalam kasus GitHub, biasanya kita tidak dapat berbicara langsung dengan administrator. Namun, mereka meletakkan kunci di halaman web mereka sehingga kami dapat memulihkan informasi dari sana.
Pemasangan kunci manual
1) Ambil salinan kunci dari server dan dapatkan sidik jarinya. NB: Lakukan ini sebelum memeriksa sidik jari.
2) Dapatkan salinan sidik jari kunci dari administrator server - dalam hal ini navigasikan ke halaman dengan informasi di github.com
3) Bandingkan kunci dari dua sumber
Dengan menempatkan mereka secara langsung di atas yang lain dalam editor teks, mudah untuk melihat apakah ada sesuatu yang berubah
(Perhatikan bahwa kunci kedua telah dimanipulasi, tetapi terlihat sangat mirip dengan aslinya - jika sesuatu seperti ini terjadi, Anda sedang diserang serius dan harus menghubungi pakar keamanan tepercaya.)
Jika kuncinya berbeda batalkan prosedur dan hubungi pakar keamanan
4) Jika tombol dibandingkan dengan benar maka Anda harus menginstal kunci yang sudah Anda unduh
Atau untuk menginstal untuk semua pengguna di sistem (sebagai root):
Instalasi kunci otomatis
Jika Anda perlu menambahkan kunci selama proses pembuatan maka Anda harus mengikuti langkah 1-3 dari proses manual di atas.
Setelah melakukannya, periksa konten
github-key-temp
file Anda dan buat skrip untuk menambahkan konten itu ke file host yang dikenal.Anda sekarang harus menyingkirkan semua
ssh
perintah yang telahStrictHostKeyChecking
dinonaktifkan.sumber
Anda dapat mencampur entri yang hash / tidak di-shash dalam file known_hosts Anda.
Jadi, jika Anda ingin menambahkan kunci github, Anda bisa melakukannya:
ssh-keyscan github.com >> ~/.ssh/known_hosts
Jika Anda ingin hash, tambahkan -H
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
sumber
Cara termudah adalah dengan mengambil kunci
ssh-keyscan
secara manual, verifikasi secara manual:Dan tambahkan ke skrip Anda, yang kemudian akan membawa kunci publik "otoritatif".
sumber