Configuring and Securing SSH
Published: 2022-10-26 05:11:23

**Apa itu OpenSSH?**
_OpenSSH_ mengimplementasikan protokol Secure Shell atau SSH di sistem Red Hat Enterprise Linux.
Kamu dapat menggunakan **perintah ssh** untuk membuat koneksi aman ke sistem jarak jauh. Kamu juga dapat menggunakan **perintah ssh** untuk menjalankan perintah individual pada sistem jarak jauh tanpa menjalankan shell interaktif.

**Contoh Shell Aman**
berikut **perintah ssh** akan memasukkan Anda ke server jarak jauh remotehost menggunakan nama pengguna yang sama dengan pengguna lokal saat ini.

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

**Mengidentifikasi Pengguna Jarak Jauh**
Perintah **W** menampilkan daftar pengguna yang saat ini masuk ke komputer.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89ssvvrb9emxq13ni42z.jpg)

**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.

Ketika pengguna menggunakan **perintah ssh** untuk terhubung ke server SSH, perintah tersebut akan memeriksa apakah ia memiliki salinan kunci publik.
Jika klien memiliki salinan kunci, SSH akan membandingkan kunci dari file host yang dikenal untuk server itu dengan yang diterimanya.

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

**Manajemen Kunci Host SSH Dikenal**
jika kunci publik server diubah karena kunci hilang karena kegagalan hard drive kamu perlu mengedit file host yang dikenal untuk memastikan entri untuk kunci publik lama diganti dengan kunci publik baru, untuk masuk tanpa kesalahan. Kunci publik disimpan di /etc/ssh/ssh_known_hosts dan masing-masing pengguna ~/.ssh/known_hosts file pada klien SSH.
 $ cat ~/.ssh/known_hosts
 $ ls /etc/ssh/*key.pub

**Catatan**
untuk menambahkan entri yang cocok dengan server ssh_host_*key.pub file ke Anda ~/.ssh/known_hostsfile atau seluruh sistem /etc/ssh/ssh_known_hosts.

**Mengonfigurasi Otentikasi Berbasis Kunci SSH**

**Otentikasi Berbasis Kunci SSH**
**Menghasilkan Kunci SSH**
Untuk membuat kunci pribadi dan kunci publik yang cocok untuk otentikasi, gunakan perintah ssh-keygen.

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

Jika kamu tidak menentukan frasa sandi saat ssh-keygen, kunci pribadi yang dihasilkan tidak dilindungi.

Contoh perintah ssh-keygen berikut menunjukkan pembuatan kunci pribadi yang dilindungi frasa sandi di samping kunci publik. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4xpj9padp12m2nq6ydrp.jpg)

Perintah -f di **ssh-keygen** menentukan tempat file kunci disimpan.
Setelah kunci SSH dibuat, kemudian disimpan secara default di .ssh/direktori home pengguna.

**Berbagi Kunci Publik**
Sebelum otentikasi berbasis kunci dapat digunakan, kunci publik perlu disalin ke sistem tujuan. Perintah ssh-copy-id digunakan untuk menyalin kunci publik.
 $ ssh-copy-id -i .ssh/key-with-pass.pub user@remotehost

Jika kamu menghilangkan jalur ke file kunci publik saat menjalankan perintah **ssh-copy-id**, itu menggunakan default /home/user/.ssh/id_rsa.pub
 $ ssh-copy-id -i .ssh/key-with-pass.pub user@remotehost

Jika kamu menghilangkan jalur ke file kunci pribadi saat menjalankan perintah ssh, itu menggunakan default /home/user/.ssh/id_rsa
 $ ssh -i .ssh/key-with-pass user@remotehost

**Menggunakan ssh-agent untuk Otentikasi Non-interaktif**
Kamu dapat menggunakan program bernama **ssh-agent** untuk menyimpan sementara frasa sandi di memori.
Kemudian setiap kali kamu menggunakan SSH untuk masuk ke sistem lain dengan kunci pribadi, **ssh-agent** akan secara otomatis memberikan frasa sandi untuk kamu.

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

Saat menjalankan **ssh-agent**,ia mencetak beberapa perintah shell. Perintah eval $(ssh-agent) memulai ssh-agent dan menjalankan perintah tersebut untuk secara otomatis mengatur variabel lingkungan tersebut untuk sesi shell itu.

Perintah ssh-add berikut menambahkan kunci pribadi dari /home/user/.ssh/id_rsa(default) dan /home/user/.ssh/key-with-pass file, masing-masing.
 $ ssh-add
 $ ssh-add .ssh/key-with-pass

perintah ssh menggunakan /home/user/.ssh/key-with-pass(non-default) file kunci pribadi untuk mengautentikasi ke server SSH. 
 $ ssh -i .ssh/key-with-pass 

**Menyesuaikan Konfigurasi Layanan OpenSSH**
**Konfigurasi Server OpenSSH**
File konfigurasi utamanya adalah /etc/ssh/sshd_config.

Server OpenSSH menggunakan PermitRootLoginpengaturan konfigurasi di /etc/ssh/sshd_configfile konfigurasi untuk mengizinkan atau melarang pengguna masuk ke sistem sebagai root. 
Dengan PermitRootLogin parameter ke yes, karena secara default, orang diizinkan untuk masuk sebagai root. 

Server SSH (sshd) harus dimuat ulang agar perubahan apa pun dapat diterapkan.
 # systemctl reload sshd

Server OpenSSH menggunakan PasswordAuthentication parameter di /etc/ssh/sshd_config file konfigurasi untuk mengontrol apakah pengguna dapat menggunakan otentikasi berbasis kata sandi untuk masuk ke sistem.