GNU/Linux >> Belajar Linux >  >> Linux

Dasar-dasar sysadmin Linux:Pemecahan masalah kegagalan known_hosts

SSH mudah digunakan dan umumnya bebas masalah. Tapi, ada file kecil ini di direktori home Anda yang bisa menjadi titik sakit yang langka untuk protokol dan alat yang ada di mana-mana ini. Entitas yang melanggar adalah ~/.ssh/known_hosts mengajukan. Jika Anda tidak mengetahuinya, Anda harus memperkenalkan diri Anda sekarang. File ini akan muncul di beberapa titik dalam karir Anda.

Jika Anda pernah melihat pesan berikut, Anda mungkin merasa takut bahwa seseorang mencoba meretas Anda, atau Anda dapat menyadari bahwa DHCP atau anomali lain telah melakukan tindakan kotor yang sangat murah terhadap Anda:

$ ssh 192.168.1.84

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:I02UyJs2vS0ym4jWn5upAWZDqwu5RjMg4aM9hPq8G1k.
Please contact your system administrator.
Add correct host key in /Users/khess/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/khess/.ssh/known_hosts:4
ECDSA host key for 192.168.1.84 has changed and you have requested strict checking.
Host key verification failed.

Apa yang terjadi di sini adalah Anda mencoba menyambung ke sistem yang tidak lagi memiliki alamat IP 192.168.1.84. Sistem yang berbeda memiliki alamat IP tersebut dan SSH mengeluh bahwa Anda mungkin diretas. Kenyataannya seringkali kurang menarik. known_hosts . Anda file mungkin tidak disinkronkan dengan realitas Host yang sebenarnya.

Banyak hal yang dapat menyebabkan permainan kursi musik alamat IP ini. Salah satu sistem bisa saja mati untuk jangka waktu yang lama dan ketika sewa yang lain habis, ia mengambil alamat IP berikutnya yang tersedia. Peristiwa tambalan dan boot ulang berikutnya menyebabkan beberapa sistem Anda memperoleh alamat IP yang berbeda. Sistem mungkin telah diinstal ulang dan identitas baru dibuat, atau mungkin seseorang mengerti dan memberikan alamat IP statis ke sistem server Anda. (Menurut pendapat saya bahwa semua server harus memiliki alamat IP statis. Hal yang sama berlaku untuk semua komponen pendukung, seperti router, sakelar, titik akses, perangkat IoT, kamera, sistem ruang konferensi, dan bahkan printer. Hanya perangkat pengguna akhir yang harus memilikinya. hak istimewa yang meragukan untuk memperoleh alamat IP acak. Saya memiliki alasan untuk pendapat yang kuat ini, yang akan saya bagikan di artikel lain nanti.)

Terlepas dari bagaimana hal itu terjadi, sistem yang ingin Anda sambungkan memiliki alamat IP baru. Salah satu yang juga dikenal sistem Anda, tetapi dengan sidik jari yang berbeda.

known_hosts yang disebutkan di atas file adalah file teks sederhana yang berada di dalam direktori tersembunyi (.ssh ) di direktori home Anda. Untuk melihat isinya, masukkan perintah berikut:

$ cat .ssh/known_hosts

192.168.1.97 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMJWpXf8Ou/XJ1Q5YcIS5Me4GgN1F7AYHbvIPayfGqwd90kvhQygrPCYEqVdw44lEOIZe+DEKP4F6Otdt38yf68=

192.168.1.101 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJRNTZm8M9IYYN3uJL/yCPv4EJRMDZkkcnt1CY8L6OR84wstYdhqtNqV0v/LQiz/AoRbHKxPTdjXfIOrc1vYDHc=

ken,192.168.1.69 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBB53lh2RyFiMfJFKBkLa643lS4GGILG6oVGq33KyBSgaDU2ZHryYak1FU1HcPa6Xb/xYqEUugv9cOXFRwajbrmg=

192.168.1.84 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMGjMsJPX4bfdEnVy59Uf2VhH1oAt7Zemd5bfSoSGxX69HBcjkekO/LkEZUlhVplBlHFqJBqs2gWYp3zVDCTwr4=

192.168.1.64 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIkK9WylcZcgjT7gUz9DMLehUBApION1CLiBVc3Pa/YfAbIDUlIWta12zL5B12RmBXgoYvntdW5rcowPiqjL0/o=

Solusi mudah untuk masalah ini adalah menghapus known_hosts file dan izinkan kunci baru dibuat untuk setiap host yang Anda sambungkan. Untuk demonstrasi ini, saya menghapus 192.168.1.84 entri dari known_hosts file lalu sambungkan ke host baru di alamat tersebut, sehingga Anda dapat melihat perbandingan tentang apa yang terjadi dalam proses tersebut. Pertama, hapus known_hosts entri dengan ssh-keygen perintah:

$ ssh-keygen -R 192.168.1.84 -f .ssh/known_hosts

 Host 192.168.1.84 found: line 4
.ssh/known_hosts updated.
Original contents retained as .ssh/known_hosts.old

Entri asli disimpan ke .ssh/known_hosts.old jika diperlukan di masa mendatang.

Setelah menghapus 192.168.1.84 entri dari  known_hosts file, saya mencoba koneksi lagi ke host 192.168.1.84 :

$ ssh 192.168.1.84
The authenticity of host '192.168.1.84 (192.168.1.84)' can't be established.
ECDSA key fingerprint is SHA256:I02UyJs2vS0ym4jWn5upAWZDqwu5RjMg4aM9hPq8G1k.
Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.1.84' (ECDSA) to the list of known hosts.

Anda dapat melihat bahwa kunci yang saya tambahkan sekarang cocok dengan yang tercantum dalam kesalahan di awal artikel. Untuk memverifikasi kunci host, jalankan perintah berikut pada host jarak jauh:

$ ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:I02UyJs2vS0ym4jWn5upAWZDqwu5RjMg4aM9hPq8G1k no comment (ECDSA)

Penutup

Kecuali Anda menggunakan alamat IP statis dan sistem Anda tidak pernah berubah, Anda akan memiliki masalah ini di beberapa titik dalam karir Anda. Itu terjadi pada saya sepanjang waktu karena saya membuat dan menghancurkan mesin virtual beberapa kali dalam sebulan. Faktanya, sering terjadi bahwa sekarang saya harus memiliki skrip yang menghapus known_hosts file di awal setiap bulan.

Idealnya, Anda tidak perlu menghapus entri dari known_hosts file (atau seluruh file). Tetapi jika harus, Anda baru saja mempelajari cara melakukannya.

Hasil yang dapat diambil:known_hosts , ssh-keygen

[Ingin mencoba Red Hat Enterprise Linux? Unduh sekarang secara gratis.]


Linux
  1. Dasar-dasar sysadmin Linux:Manajemen akun pengguna dengan UID dan GID

  2. Dasar-dasar sysadmin Linux:Manajemen akun pengguna

  3. 5 alat sysadmin Linux favorit saya

  1. Memecahkan masalah perangkat keras di Linux

  2. Lab Linux:SysAdmin 101

  3. 50 Tutorial Sysadmin UNIX / Linux

  1. Memecahkan masalah WiFi lambat di Linux

  2. Dasar-dasar Izin File Linux

  3. Pemecahan masalah Linux 101:Kinerja sistem