Configuring and Securing SSH
Published: 2024-04-02 02:42:23

Apa itu OpenSSH?
OpenSSH adalah versi sumber terbuka dari alat Secure Shell (SSH) yang digunakan oleh administrator Linux dan non-Windows lainnya untuk manajemen lintas platform sistem jarak jauh.
Anda dapat menggunakan perintah ssh untuk membuat koneksi aman ke sistem jarak jauh, mengautentikasi sebagai pengguna tertentu, dan mendapatkan sesi shell interaktif pada sistem jarak jauh sebagai pengguna tersebut. Anda juga dapat menggunakan perintah ssh untuk menjalankan perintah individual pada sistem jarak jauh tanpa menjalankan shell interaktif.

Contoh Shell Aman

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klqq8nzqz9iyirh4h96q.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/clflw3x41bxjaixv9xnz.png)

Output sebelumnya menunjukkan bahwa pengguna user02 telah masuk ke sistem pada terminal semu 0 pada 16:13 hari ini dari host dengan alamat IP 172.25.250.10, dan telah menganggur di prompt shell selama tujuh menit tiga puluh detik . Keluaran sebelumnya juga menunjukkan bahwa pengguna user01 telah masuk ke sistem pada terminal semu 1 dan telah menganggur sejak tiga detik terakhir setelah menjalankan perintah w.

Kunci host SSH
SSH mengamankan komunikasi melalui enkripsi kunci publik. Ketika klien SSH terhubung ke server SSH, server mengirimkan salinan kunci publiknya ke klien sebelum klien masuk. Ini digunakan untuk menyiapkan enkripsi aman untuk saluran komunikasi dan untuk mengautentikasi server ke klien.
Saat pengguna menggunakan perintah ssh untuk terhubung ke server SSH, perintah tersebut akan memeriksa apakah pengguna memiliki salinan kunci publik untuk server tersebut di file host lokal yang diketahui. Administrator sistem mungkin telah melakukan pra-konfigurasi di /etc/ssh/ssh_known_hosts, atau pengguna mungkin memiliki file ~/.ssh/known_hosts di direktori home mereka yang berisi kunci tersebut.
ssh akan membandingkan kunci dari file host yang dikenal untuk server tersebut dengan yang diterima. Jika kunci tidak cocok, klien berasumsi bahwa lalu lintas jaringan ke server dapat dibajak atau server telah disusupi, dan meminta konfirmasi pengguna apakah akan melanjutkan koneksi atau tidak.

Catatan
Atur parameter **StrictHostKeyChecking** ke **yes** di file ~/.ssh/config khusus pengguna atau /etc/ssh/ssh_config di seluruh sistem untuk menyebabkan perintah ssh selalu membatalkan koneksi SSH jika kunci publik tidak cocok.

Jika klien tidak memiliki salinan kunci publik di file host yang diketahui, perintah ssh akan menanyakan apakah Anda tetap ingin masuk. Jika Anda melakukannya, salinan kunci publik akan disimpan di file ~/.ssh/known_hosts Anda sehingga identitas server dapat dikonfirmasi secara otomatis di masa mendatang.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0xiseor4v4jtzgn1mwn4.png)

**Manajemen Kunci Host Dikenal SSH**
Jika kunci publik server diubah karena kunci tersebut hilang karena kegagalan hard drive, atau diganti karena alasan yang sah, Anda perlu mengedit file host yang diketahui untuk memastikan entri untuk kunci publik lama diganti dengan entri dengan kunci publik baru untuk masuk tanpa kesalahan.

Kunci publik disimpan di /etc/ssh/ssh_known_hosts dan file ~/.ssh/known_hosts masing-masing pengguna di klien SSH. Setiap kunci ada dalam satu baris. Bidang pertama adalah daftar nama host dan alamat IP yang berbagi kunci publik tersebut. Bidang kedua adalah algoritma enkripsi untuk kunci tersebut. Bidang terakhir adalah kunci itu sendiri.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vlo6e04u2rd8k2p9pfxm.png)

Setiap server SSH jarak jauh yang Anda sambungkan menyimpan kunci publiknya di direktori /etc/ssh dalam file dengan ekstensi .pub.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bhphos7ithhgmnkgo6hg.png)

**_Catatan_**
Merupakan praktik yang baik untuk menambahkan entri yang cocok dengan file ssh_host_*key.pub server ke file ~/.ssh/known_hosts atau file /etc/ssh/ssh_known_hosts di seluruh sistem.