SSH: host yang dikenal dengan alamat dinamis

12

Saya perlu terhubung ke host dengan alamat IP dinamis.

Setiap kali IP-nya berubah, SSH meminta saya validasi sidik jari:

The authenticity of host '...' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)?

Apakah mungkin untuk melewatkan kunci publik host SSH, sehingga:

  1. SSH memvalidasi keaslian host secara otomatis
  2. Kunci host tidak disimpan dalam file known_hosts

Pertanyaan ini berbeda dari Bagaimana saya bisa menghindari verifikasi host SSH untuk host yang dikenal? karena itu pertanyaan lain bertujuan untuk validasi menekan SSH, sementara saya tidak ingin menekannya: Saya tidak ingin memiliki host dikonfirmasi, hanya menggunakan kunci publik tuan rumah (yang saya tahu, dan telah itu disimpan dalam file) daripada SSH known_hostsmengajukan.

Bagi saya, pertanyaan lain tampaknya tentang menghubungkan ke server yang berbeda setiap waktu, daripada menghubungkan ke satu server terkenal dengan IP dinamis.

peoro
sumber

Jawaban:

8

Solusi terbaik (mis. Paling dekat dengan yang saya inginkan) yang bisa saya temukan adalah dengan menggunakan opsi HostKeyAlias: ia akan menggunakan nama host yang saya tentukan untuk diakses known_hosts(daripada IP yang saya hubungkan ke).

Saya perlu menambahkan kunci publik host untuk known_hostsmenggunakan nama host yang diberikan (misalnya:) myhostdan kemudian terhubung dengan menggunakan:

ssh -o 'HostKeyAlias myhost' ...
peoro
sumber
Saya tahu ini sudah lama, tetapi: jika ini menjawab pertanyaan Anda, terimalah.
kittykittybangbang
Catatan untuk orang lain: Anda dapat menambahkan nilai HostKeyAliaskonfigurasi ke ~/.ssh/configfile Anda atau bahkan ke /etc/ssh/ssh_configfile global .
kael
6

The known_hostsfile tidak hanya kunci, juga mengandung nama host Anda gunakan untuk menghubungkan, dan jika mungkin IP yang berkorespondensi. Itulah sebabnya Anda melihat kesalahan, itu membandingkan triplet yang didapatnya dari server dengan apa yang Anda simpan dalam file known_hosts.

Jadi, jika IP terus berubah, Anda dapat menonaktifkan CheckHostIPdan itu berarti itu hanya akan memeriksa nama host dan kunci host. Jika itu tetap tidak berubah, Anda seharusnya memiliki lebih sedikit keluhan, tetapi Anda akan berisiko jika seseorang membajak DNS Anda.

NickW
sumber
1
Terima kasih atas jawabannya, saya akan mengujinya segera! Lagi pula, mengapa tetap ada di rist? Jika saya tahu kunci publik SSH tuan rumah, itu seharusnya cukup untuk sepenuhnya aman dalam hal apa pun (kecuali seseorang berhasil mencuri kunci pribadi tuan rumah itu), bukan?
peoro
Dan saya masih tidak begitu suka jika saya harus jujur. Menggunakan bendera itu SSH masih akan mengakses known_hosts. Mengapa? Tidak bisakah saya mengatakan "ssh sambungkan ke X yang kunci publiknya Y"? Kenapa tidak? Bukankah itu 100% pasti.
peoro
Idenya adalah bahwa kunci host adalah bagian dari keseluruhan yang lebih besar, dan itu saja tidak cukup jaminan untuk memastikan server yang Anda hubungkan masih yang Anda terhubung sebelumnya. Anda harus yakin bahwa IP, dan entri DNS juga cocok .. ingat, ini adalah shell berbasis jaringan, jadi jaringan perlu diperiksa juga.
NickW