Banyak layanan (seperti GitHub) menggunakan berbagai IP, dan jelas kunci publik yang sama.
Bagaimana saya bisa menambahkan rentang IP (sebaiknya dalam satu) ke file known_hosts?
Untuk contoh GitHub, ia menggunakan rentang berikut:
- 207.97.227.224/27
- 173.203.140.192/27
- 204.232.175.64/27
- 72.4.117.96/27
- 192.30.252.0/22
Dan kuncinya adalah:
AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa + PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31 / YMF + Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB + weqqUUmpaaasXVal72J + UX2B + 2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi / w4yCE6gbODqnTWlg7 + wC604ydGXA8VJiS5ap43JXiUFFAaQ ==
Jawaban:
Seperti dicatat dalam jawaban lain, known_hosts tidak memiliki dukungan untuk rentang alamat IP. Namun, itu mendukung wildcard. Tentu saja wild-card bukan hal yang sama sehingga Anda harus benar-benar berhati-hati tentang bagaimana Anda menggunakannya di alamat IP, tetapi dalam kasus Github tertentu ini dapat dilakukan dengan aman.
Situasi tampaknya menjadi lebih sederhana sejak pertanyaan itu diajukan. Menurut dokumentasi resmi Github, hanya ada satu rentang alamat IP yang digunakan (setidaknya sejauh IPv4 berjalan). Ini adalah kisaran 192.30.252.0/22. Itu membuat 1020 kemungkinan alamat IP yang dengan mudah menjangkau seluruh rentang yang mungkin untuk oktet terakhir hanya dalam empat blok C yang berbeda.
Dari
man 8 sshd
, inilah yang harus kita kerjakan di known_hosts:Menggunakan info ini, kita dapat membuat entri menggunakan * wildcard untuk oktet terakhir yang cocok dengan semua titik akhir Github yang mungkin (dan HANYA titik-titik akhir tersebut) seperti:
Jika rentang IP yang Anda butuhkan untuk membangun tidak mengisi blok C penuh dan dengan demikian semua nilai yang mungkin untuk satu oktet, tidak mungkin untuk menggunakan wildcard untuk kecocokan yang akurat.
sumber
Saya tidak berpikir Anda dapat dengan mudah menambahkan rentang, tapi saya pikir (tidak dapat menguji ini sekarang) bahwa efek yang sama dapat dicapai dengan menambahkan berikut ini ke .ssh / ssh_config:
Selanjutnya, Anda akan menambahkan kunci ke file known_hosts di bawah nama github-server-pool.github.com.
Asumsi: host github-server-pool.github.com tidak ada atau tidak pernah terhubung melalui SSH.
Gagasan di baliknya, adalah ssh akan menggunakan kunci github-server-pool.github.com sebagai kunci untuk mencari kunci host publik untuk semua host domain github.com.
sumber
Tidak ada dukungan untuk set alamat IP dalam
known_hosts
file. Anda harus memiliki satu baris per alamat.Meskipun bagian nama host dari entri di-hash secara default, ini hanya untuk privasi sehingga seseorang yang menguasai Anda
.known_hosts
tidak akan dapat dengan mudah mengetahui host mana yang telah Anda sambungkan. (Mereka masih dapat memverifikasi tebakan.) Anda dapat menggunakan nama host atau alamat IP.Perhatikan bahwa ini dapat menambah duplikat.
sumber
SSH tampaknya tidak memiliki konsep rentang IP untuk known_hosts. Saya pikir asumsinya adalah bahwa setiap host akan memiliki kunci unik untuk alasan keamanan.
Dua cara yang dapat saya lihat untuk mempopulasikan host_surya Anda:
ssh-keyscan
- Tulis skrip singkat untuk beralih melalui semua alamat tersebut dan berikan feedssh-keyscan
atau file untukssh-keyscan
dibaca.ssh-keyscan
dapat memindai beberapa host per permintaan, baik dengan menentukan satu baris atau menentukan daftar host.Isi
known_hosts
diri Anda dengan skrip atau editor. Formatnya cukup sederhana jika Anda menggunakan versi non-hash. Ini:nama host, alamat IP kunci ssh-keytype
hostname
adalah nama host yang Anda hubungi, dan akan sama untuk semua alamat GitHub.IP address
akan seperti apa yang akan diulangi skrip.key
adalah kunci yang Anda berikan di atas.Tidak ada yang elegan, tapi saya pikir orang-orang SSH berasumsi tidak ada yang akan melakukan apa yang dilakukan GitHub.
sumber
Hai Saya menemukan skrip dari Gilles cukup berguna, tetapi hanya bekerja untuk jaringan hingga
0.0.0.0/24
batasan, saya telah memperluas skrip untuk bekerja dengan jaringan yang lebih besar hingga0.0.0.0/16
mungkin akan berguna bagi orang lain.sumber