GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengonfigurasi Otentikasi Berbasis Kunci SSH Di Linux

Panduan ini menjelaskan apa itu autentikasi berbasis kunci SSH, jenis metode autentikasi SSH, dan terakhir cara mengonfigurasi autentikasi berbasis kunci SSH di Linux dan sistem operasi mirip-Unix.

Apa yang dimaksud dengan otentikasi berbasis Kunci SSH?

Seperti yang kita semua tahu, Secure Shell , segera SSH , adalah protokol jaringan kriptografi yang memungkinkan Anda untuk berkomunikasi/mengakses sistem jarak jauh dengan aman melalui jaringan yang tidak aman, misalnya Internet.

Setiap kali Anda mengirim data melalui jaringan yang tidak aman menggunakan SSH, data akan dienkripsi secara otomatis di sistem sumber, dan didekripsi di sisi tujuan.

SSH menyediakan empat metode otentikasi yaitu otentikasi berbasis kata sandiautentikasi berbasis kunci , Autentikasi berbasis host , dan Autentikasi keyboard .

Metode otentikasi yang paling umum digunakan adalah otentikasi berbasis kata sandi dan berbasis kunci.

Dalam otentikasi berbasis kata sandi, yang Anda butuhkan hanyalah kata sandi pengguna sistem jarak jauh. Jika Anda mengetahui sandi pengguna jarak jauh, Anda dapat mengakses sistem masing-masing menggunakan "ssh [email protected]" perintah.

Di sisi lain, dalam autentikasi berbasis kunci, Anda perlu membuat pasangan kunci SSH dan mengunggah kunci publik SSH ke sistem jarak jauh untuk mengomunikasikannya melalui SSH.

Setiap pasangan kunci SSH terdiri dari kunci pribadi dan kunci publik. Kunci pribadi harus disimpan dalam sistem klien, dan kunci publik harus diunggah ke sistem jarak jauh. Anda tidak boleh mengungkapkan kunci pribadi kepada siapa pun .

Semoga Anda mendapatkan ide dasar tentang SSH dan metode otentikasinya. Sekarang mari kita konfigurasikan otentikasi berbasis kunci SSH di Linux.

Konfigurasikan otentikasi berbasis kunci SSH di Linux

Untuk tujuan panduan ini, saya akan menggunakan sistem Arch Linux sebagai sistem lokal dan Ubuntu 18.04 LTS sebagai sistem jarak jauh.

Detail sistem lokal:

  • OS :Desktop Arch Linux
  • Alamat IP :192.168.225.37 /24

Detail sistem jarak jauh:

  • OS :Server Ubuntu 18.04 LTS
  • Alamat IP :192.168.225.22/24

Buat pasangan kunci SSH

Seperti yang sudah disebutkan, dalam metode otentikasi berbasis kunci SSH, kunci publik harus diunggah ke sistem jarak jauh yang ingin Anda akses melalui SSH.

Kunci publik biasanya akan disimpan dalam file bernama ~/.ssh/authorized_keys di sistem SSH jarak jauh.

Catatan penting: Jangan buat pasangan kunci sebagai root , karena hanya root yang dapat menggunakan kunci tersebut. Buat pasangan kunci sebagai pengguna biasa.

Sekarang, mari kita buat pasangan kunci SSH di sistem lokal. Untuk melakukannya, jalankan perintah berikut di sistem klien lokal Anda.

$ ssh-keygen

Perintah di atas akan membuat pasangan kunci RSA 2048 bit. Masukkan kata sandi dua kali. Lebih penting lagi, ingat kata sandi Anda. Anda akan membutuhkannya nanti.

Contoh keluaran:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/sk/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/sk/.ssh/id_rsa.
Your public key has been saved in /home/sk/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wYOgvdkBgMFydTMCUI3qZaUxvjs+p2287Tn4uaZ5KyE [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|+=+*= + |
|o.o=.* = |
|.oo * o + |
|. = + . o |
|. o + . S |
| . E . |
| + o |
| +.*o+o |
| .o*=OO+ |
+----[SHA256]-----+

Jika Anda telah membuat pasangan kunci, Anda akan melihat pesan berikut. Cukup ketik "y" untuk menimpa kunci yang ada .

/home/username/.ssh/id_rsa already exists.
Overwrite (y/n)?

Catatan:

Harap diperhatikan bahwa frasa sandi bersifat opsional . Jika Anda memberikannya, Anda akan diminta untuk memasukkan sandi setiap kali mencoba SSH ke sistem jarak jauh kecuali Anda menggunakan agen SSH untuk menyimpan sandi.

Jika Anda tidak menginginkan frasa sandi (meskipun tidak aman), cukup tekan tombol ENTER dua kali saat Anda diminta untuk memberikan frasa sandi. Namun, saya menyarankan Anda untuk menggunakan frasa sandi.

Menggunakan kunci ssh tanpa kata sandi umumnya bukan ide yang baik dari sudut pandang keamanan. Mereka harus dibatasi pada kasus yang sangat spesifik seperti layanan yang harus mengakses sistem jarak jauh tanpa campur tangan pengguna (mis. pencadangan jarak jauh dengan rsync, unison, ...).

Jika Anda sudah memiliki kunci ssh tanpa frasa sandi di file pribadi ~/.ssh/id_rsa dan ingin memperbarui kunci dengan frasa sandi, gunakan perintah berikut:

$ ssh-keygen -p -f ~/.ssh/id_rsa

Contoh keluaran:

Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

Salin kunci publik SSH ke sistem jarak jauh

Kami telah membuat pasangan kunci di sistem lokal. Selanjutnya, salin kunci publik SSH ke server SSH jarak jauh Anda menggunakan perintah:

$ ssh-copy-id [email protected]

Di sini, saya akan menyalin kunci publik sistem lokal (Linux Arch) ke sistem jarak jauh (Ubuntu 18.04 LTS dalam kasus saya).

Secara teknis, perintah di atas akan menyalin konten ~/.ssh/id_rsa.pub key sistem lokal ke ~/.ssh/authorized_keys sistem jarak jauh mengajukan. Bersih? Bagus.

Ketik ya untuk melanjutkan koneksi ke server SSH jarak jauh Anda dan kemudian masukkan kata sandi sudo (atau pengguna root) dari sistem jarak jauh.

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Jika Anda telah menyalin kunci, tetapi ingin memperbarui kunci dengan frasa sandi baru, gunakan -f opsi untuk menimpa kunci yang ada seperti di bawah ini.

$ ssh-copy-id -f [email protected]

Kami telah berhasil menambahkan kunci publik SSH sistem lokal ke sistem jarak jauh.

Kami sekarang dapat sepenuhnya menonaktifkan otentikasi berbasis kata sandi di sistem jarak jauh. Karena, kami telah mengonfigurasi otentikasi berbasis kunci, jadi kami tidak memerlukan otentikasi berbasis kata sandi lagi.

Nonaktifkan otentikasi berbasis kata sandi SSH di sistem jarak jauh

Anda perlu melakukan perintah berikut sebagai pengguna root atau sudo.

Untuk menonaktifkan autentikasi berbasis sandi, buka konsol sistem jarak jauh Anda dan edit /etc/ssh/sshd_config file konfigurasi menggunakan editor apa pun:

$ sudo vi /etc/ssh/sshd_config

Temukan baris berikut. Batalkan komentar dan tetapkan nilainya sebagai tidak .

PasswordAuthentication no

Mulai ulang layanan ssh untuk menerapkan perubahan.

$ sudo systemctl restart sshd

Mengakses sistem Jarak Jauh dari sistem lokal

Buka sistem lokal Anda dan SSH ke server jarak jauh Anda menggunakan perintah:

$ ssh [email protected]

Masukkan frasa sandi untuk masuk ke sistem jarak jauh.

Contoh keluaran:

Enter passphrase for key '/home/sk/.ssh/id_rsa': 
Last login: Mon Jul 9 09:59:51 2018 from 192.168.225.37
[email protected]:~$

Seperti yang Anda perhatikan, kami telah masuk ke akun sistem jarak jauh menggunakan frasa sandi yang kami buat sebelumnya menggunakan ssh-keygen perintah, tidak menggunakan kata sandi akun pengguna yang sebenarnya.

Jika Anda mencoba ssh dari sistem klien lain, Anda akan mendapatkan pesan kesalahan ini. Katakan misalnya, saya mencoba SSH ke sistem Ubuntu saya dari CentOS saya menggunakan perintah:

$ ssh [email protected]

Contoh keluaran:

The authenticity of host '192.168.225.22 (192.168.225.22)' can't be established.
ECDSA key fingerprint is 67:fc:69:b7:d4:4d:fd:6e:38:44:a8:2f:08:ed:f4:21.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.225.22' (ECDSA) to the list of known hosts.
Permission denied (publickey).

Seperti yang Anda lihat pada output di atas, saya tidak diizinkan untuk SSH ke sistem Ubuntu 18.04 jarak jauh saya dari sistem lain.

Menambahkan lebih banyak kunci sistem klien ke server SSH

Ini sangat penting. Seperti yang sudah saya katakan, Anda tidak dapat mengakses sistem jarak jauh melalui SSH, kecuali yang Anda konfigurasikan (dalam kasus kami, ini adalah Ubuntu).

Saya ingin memberikan izin kepada lebih banyak klien untuk mengakses server SSH jarak jauh. Apa yang harus saya lakukan? Sederhana. Anda perlu membuat pasangan kunci SSH di semua sistem klien Anda dan menyalin kunci publik ssh secara manual ke server jauh yang ingin Anda akses melalui SSH.

Untuk membuat pasangan kunci SSH pada sistem klien Anda, jalankan:

$ ssh-keygen

Masukkan kata sandi dua kali. Setelah pasangan kunci dibuat, salin kunci ssh publik (bukan kunci pribadi) ke server jauh Anda secara manual.

Tampilkan kunci pub menggunakan perintah:

$ cat ~/.ssh/id_rsa.pub

Anda akan melihat output seperti di bawah ini.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt3a9tIeK5rPx9p74/KjEVXa6/OODyRp0QLS/sLp8W6iTxFL+UgALZlupVNgFjvRR5luJ9dLHWwc+d4umavAWz708e6Na9ftEPQtC28rTFsHwmyLKvLkzcGkC5+A0NdbiDZLaK3K3wgq1jzYYKT5k+IaNS6vtrx5LDObcPNPEBDt4vTixQ7GZHrDUUk5586IKeFfwMCWguHveTN7ykmo2EyL2rV7TmYq+eY2ZqqcsoK0fzXMK7iifGXVmuqTkAmZLGZK8a3bPb6VZd7KFum3Ezbu4BXZGp7FVhnOMgau2kYeOH/ItKPzpCAn+dg3NAAziCCxnII9b4nSSGz3mMY4Y7 [email protected]

Salin seluruh konten (melalui drive USB atau media apa pun) dan buka konsol server jarak jauh Anda. Buat direktori bernama ssh di direktori home seperti yang ditunjukkan di bawah ini.

$ mkdir -p ~/.ssh

Selanjutnya, tambahkan kunci pub sistem klien yang Anda buat pada langkah sebelumnya dalam file bernama "~/.ssh/authorized_keys" :

echo {Your_public_key_contents_here} >> ~/.ssh/authorized_keys

Mulai ulang layanan ssh pada sistem jarak jauh. Sekarang, Anda dapat melakukan SSH ke server Anda dari klien baru.

Jika menambahkan ssh pubkey secara manual tampaknya sulit, aktifkan autentikasi berbasis kata sandi untuk sementara di sistem jarak jauh dan salin kunci menggunakan perintah "ssh-copy-id" dari sistem lokal Anda dan terakhir nonaktifkan autentikasi berbasis kata sandi.

Bacaan Terkait:

  • Cara Menyetel Otentikasi Multi-Faktor Untuk SSH Di Linux
  • Temukan Jika Pengguna Menggunakan Otentikasi SSH Berbasis Kata Sandi Atau Berbasis Kunci
  • SSLH – Bagikan Port yang Sama Untuk HTTPS Dan SSH
  • ScanSSH – Server SSH Cepat Dan Pemindai Proxy Terbuka

Kesimpulan

Otentikasi berbasis SSH Key memberikan perlindungan lapisan ekstra dari serangan brute force. Seperti yang Anda lihat, mengonfigurasi otentikasi berbasis kunci juga tidak terlalu sulit. Ini adalah salah satu metode yang disarankan untuk menjaga server Linux Anda tetap aman dan terlindungi.


Linux
  1. Cara mengkonfigurasi kunci SSH menggunakan cPanel

  2. Cara Mengubah Port SSH Di Linux

  3. Konfigurasi SSH Keys pada Sistem Debian 9 - Bagaimana cara melakukannya?

  1. Cara Menghasilkan Kunci SSH di Windows 10

  2. Cara Menonaktifkan Otentikasi Kata Sandi SSH di VPS Linux

  3. Cara kerja SSH Tanpa Kata Sandi di Linux / UNIX

  1. Cara Membuat Alias ​​​​SSH Di Linux

  2. Cara Mengetahui Jika Seorang Pengguna Menggunakan Otentikasi SSH Berbasis Kata Sandi Atau Berbasis Kunci Di Linux

  3. Cara Mengonfigurasi Penerusan X11 Menggunakan SSH Di Linux