Saya secara teratur ssh ke komputer yang merupakan komputer dual-boot OS X / Linux. Contoh dua OS tidak berbagi kunci host yang sama, sehingga mereka dapat dilihat sebagai dua host berbagi IP dan DNS yang sama. Katakanlah IP adalah 192.168.0.9
, dan namanya adalah hostname
danhostname.domainname
Sejauh yang saya mengerti, solusi untuk dapat terhubung ke dua host adalah menambahkan keduanya ke ~/.ssh/know_hosts
file. Namun, lebih mudah diucapkan daripada dilakukan, karena file tersebut hash, dan mungkin memiliki beberapa entri per host ( 192.168.0.9
, hostname
, hostname.domainname
). Sebagai konsekuensinya, saya memiliki peringatan berikut
Warning: the ECDSA host key for 'hostname' differs from the key for the IP address '192.168.0.9'
Apakah ada cara mudah untuk mengedit known_hosts
file, sambil menjaga hash. Sebagai contoh, bagaimana saya bisa menemukan garis yang sesuai dengan nama host yang diberikan? Bagaimana saya bisa menghasilkan hash untuk beberapa host yang dikenal?
Solusi yang ideal akan memungkinkan saya untuk terhubung ke komputer ini dengan ssh, tidak peduli apakah saya menyebutnya 192.168.0.9
, hostname
atau hostname.domainname
, apakah itu menggunakan Linux hostkey atau OSX hostkey-nya. Namun, saya masih ingin menerima peringatan jika ada orang yang benar-benar menyerang tengah, yaitu jika kunci lain dari keduanya digunakan.
Jawaban:
Solusi paling mudah di sini adalah hanya menggunakan kunci host yang sama untuk Linux dan OS X. Yaitu, pilih satu set
/etc/ssh/ssh_host_*_key*
file dan salin ke OS lain. Kemudian kunci host yang sama akan disajikan kepada klien SSH terlepas dari OS mana Anda telah boot, dan klien SSH tidak akan menjadi lebih bijaksana.sumber
/private/etc/ssh_host*
tidak/etc/ssh/ssh_host*
.sshd
memuat kunci host sekali saat startup, jadi Anda kemungkinan besar perlu memulai ulangsshd
. Saya akan menambahkan itu ke jawabannya. Adapun solusi lain yang lebih baik, itu tergantung pada situasi Anda. Saya berpendapat bahwa kelebihan utama dari metode ini adalah bahwa ia hanya membutuhkan pengaturan satu kali dan lebih mungkin untuk bekerja dengan beberapa implementasi klien SSH.sshd
memuat kunci host pada setiap koneksi baru. Mungkin sudah seperti ini sejak lama dan saya hanya mengasumsikan kunci host diperlakukan sepertisshd
konfigurasi lainnya . Jadi, itu mungkin masalah Anda.Seperti yang disarankan @Izzy dalam komentar di atas, ssh memberi tahu Anda garis yang menyinggung, dan dengan menghapus garis itu, (menyimpannya di tempat lain), menerima kunci baru, dan kemudian menyalin garis yang dihapus kembali, Anda berakhir dengan dua tombol untuk hal yang sama host, dan ssh akan menerima.
(Anda juga dapat menggunakan
ssh-keygen -H -F <hostname>
untuk menemukan baris dalam file known_hosts Anda yang cocok dengan nama host itu. Menjalankan ini setelah menyalin kembali baris yang dihapus akan mencantumkan dua entri.)Jika ada yang tahu bagaimana membuat Putty melakukan hal yang sama, saya akan sangat tertarik mendengarnya.
sumber
Saya menemukan ini yang dapat membantu Anda dengan apa yang ingin Anda capai.
Sumber: /programming/733753/how-to-handle-ssh-host-key-verification-with-2-different-hosts-on-the-same-but
sumber
known_hosts
danCheckHostIP
.Cara termudah untuk menyelesaikan masalah Anda adalah memberi masing-masing host alamat IP sendiri / berbeda. Dengan 253 alamat yang tersedia di jaringan (pribadi) dan IPv4 Anda, itu bukan masalah besar. Beri mereka IP tetap (karena server DHCP akan mengidentifikasi mesin berdasarkan pada kartu jaringan alamat MAC, dan keduanya akan mendapatkan alamat yang sama). Saya tidak melihat solusi lain jika Anda ingin menjaga langkah-langkah keamanan (yang saya juga tidak akan turun untuk "kenyamanan" kecil itu).
sumber
192.168.0.xx
dan tidak pribadi. Ini adalah alamat IPv4 'asli', yang diberikan oleh universitas saya yang tidak bisa saya ubah.Saya tidak mengalami masalah ketika menghubungkan ke berbagai kotak VPS yang berbagi IP yang sama karena masing-masing memiliki port SSH yang berbeda (20022,30022, dll) sehingga mereka terdaftar sebagai host yang dikenal dengan kunci yang berbeda.
Mungkinkah itu solusi untuk Anda?
sumber
Artikel lain , yang menjelaskan beberapa cara untuk menangani masalah Anda:
sumber
hostname
reboot ke Linut atau OSXKarena Anda ingin tetap memeriksa kunci host ketat, saya ingin mereka menggunakan
known_hosts
file yang berbeda . Untuk melakukan ini, atur~/.ssh/config
file Anda (atau/etc/ssh/ssh_config
file jika Anda memerlukan ini untuk bekerja pada beberapa akun pengguna lokal) seperti ini:, mengganti
$REALHOSTNAME
dengan nama host atau alamat IP yang sebenarnya, tentu saja. (Tidak masalah yang Anda pilih, asalkan Anda memilih sesuatu setelah "Hostname" yang akan menyelesaikan ke alamat IP, tapi saya akan menggunakan nama host dalam preferensi ke alamat IP, hanya pada prinsip-prinsip umum.)Kemudian
ssh myserver.linux
danssh myserver.osx
dengan demikian dapat memiliki kunci host yang berbeda, tetapi Anda masih mendapatkan pemeriksaan. Jika Linux terserah dan Anda mengetik OS X (atau sebaliknya), Anda akan mendapatkan peringatan (yang saya percaya adalah pengaruh yang diinginkan).Jika saya memiliki masalah ini, saya akan memastikan ada sesuatu yang benar-benar salah pada
known_hosts
file utama yang tidak cocok dengan salah satu dari keduanya, sehingga jika Anda mengetik$REALHOSTNAME
alih-alihmyserver.osx
Anda mendapatkan peringatan. :-) Saya akan melakukannya dengan meletakkan sesuatu sepertidi saya
/etc/hosts
, kemudian melakukanssh $REALHOSTNAME
dan menerima kunci baru, lalu mengeluarkan entri itu.sumber