GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan ssh-keygen dan berbagi untuk otentikasi berbasis kunci di Linux

Jika Anda pernah bekerja sebagai sysadmin (atau Anda menginginkannya di masa mendatang), Anda perlu memahami SSH dengan baik. Saya tidak akan memandu Anda melalui konsep umum karena telah di-hash di sini di Enable Sysadmin. Namun, saya ingin melihat cara yang berpotensi lebih baik untuk menggunakannya. SSH adalah satu-satunya protokol akses jarak jauh yang paling banyak digunakan di dunia. Oleh karena itu, masuk akal jika kita mencoba untuk meningkatkan penggunaannya sebanyak mungkin.

Saya menggunakan SSH untuk terhubung dari jarak jauh ke ribuan mesin pelanggan selama saya bekerja sebagai teknisi pendukung, dan saya yakin orang lain memiliki pengalaman serupa. Dengan otentikasi SSH tradisional, Anda memerlukan nama pengguna dan kata sandi untuk akun yang ingin Anda masuki setiap kali Anda ingin mengakses sistem. Kedengarannya tidak terlalu buruk, bukan? Tapi, apa yang terjadi ketika Anda harus bolak-balik antar sistem secara teratur? Atau bagaimana jika tanggung jawab Anda mencakup sesi jarak jauh ke 100 sistem yang sama sepanjang hari untuk pemeriksaan kesehatan? Ada cara lain untuk menyelesaikan proses masuk, dan dengan sedikit investasi di muka, ini bisa jauh lebih efisien secara keseluruhan.

Proses pengerasan

Secara obyektif benar bahwa kunci terenkripsi adalah target yang jauh lebih sulit daripada nama pengguna dan kata sandi bagi mereka yang berniat buruk. Meskipun memerlukan sedikit pembelajaran, membuat dan menggunakan otentikasi berbasis kunci SSH bernilai investasi untuk setiap sysadmin.

Berikut adalah cara kerjanya. Anda menghasilkan kunci publik dan kunci pribadi yang cocok. File kunci pribadi bertindak sebagai sandi dan harus tetap aman. Namun, kunci publik disalin ke sistem target yang Anda sambungkan secara teratur. Anda menempatkan kunci publik di direktori home akun Anda di server target. Saat Anda mencoba masuk, kunci diverifikasi, dan akses diberikan.

Sekarang, ada dua cara yang bisa Anda lakukan. Yang satu lebih nyaman, dan yang lainnya agak membosankan tetapi dengan perlindungan tambahan untuk Anda. Cara mudahnya adalah dengan tidak menentukan kata sandi bersama dengan kunci pribadi. Hasilnya adalah Anda tidak perlu memasukkan kata sandi saat menggunakan kunci pribadi Anda untuk otentikasi. Ini berarti bahwa jika seseorang mendapatkan kunci pribadi Anda, mereka juga dapat menggunakannya untuk mengautentikasi. Metode lainnya adalah melindungi kunci pribadi Anda dengan kata sandi sehingga Anda diminta memasukkan kata sandi saat mengautentikasi (pikirkan autentikasi dua faktor menggunakan kunci pribadi dan kata sandi).

ssh-keygen tanpa kata sandi

Untuk menghasilkan pasangan kunci SSH, gunakan perintah berikut:

[user@host ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:veutUNPio3QDCyvkYm1oIx35hmMrHpPKWFdIYu3HV+w [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|   .     .       |
|  o o     o      |
| . = o   o .     |
|  o + = S E .    |
| ..O o + * +     |
|.+% O . + B .    |
|=*oO . . + *     |
|++.     . +.     |
+----[SHA256]-----+ 

Secara default, kunci pribadi dan publik Anda disimpan di ~/.ssh/id_rsa Anda dan ~/.ssh/id_rsa.pub file, masing-masing.

ssh-keygen dengan kata sandi

Membuat kunci yang dilindungi kata sandi terlihat seperti ini:

[user@host ~]$ ssh-keygen -f .ssh/key-with-password
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in .ssh/key-with-password.
Your public key has been saved in .ssh/key-with-password.pub.
The key fingerprint is:
SHA256:s7GGB7EyHUry4aOcNPKmhNKS7dl1YsMVLvFZJ77VxAo [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    . + =.o ...  |
|     = B XEo o.  |
|  . o O X =....  |
| = = = B = o.    |
|= + * * S .      |
|.+ = o + .       |
|  + .            |
|                 |
|                 |
+----[SHA256]-----+

Gunakan -f opsi untuk menentukan file tempat kunci akan disimpan. Pada contoh di atas, kunci privat dan publik disimpan di /home/user/.ssh/key-with-pass dan /home/user/.ssh/key-with-pass.pub file, masing-masing.

Peringatan

Selama pembuatan pasangan kunci SSH lebih lanjut, jika Anda tidak menentukan nama file yang unik, Anda akan dimintai izin untuk menimpa id_rsa yang ada dan id_rsa.pub file. Jika Anda menimpa id_rsa yang ada dan id_rsa.pub file, Anda kemudian harus mengganti kunci publik lama dengan yang baru di SEMUA dari server SSH yang memiliki kunci publik lama Anda.

Setelah Anda membuat kunci, kunci tersebut disimpan di /user/home/.ssh/ direktori dengan izin berikut:

  • Kunci pribadi - 600
  • Kunci publik - 644

Anda belum selesai. Mari kita lihat langkah terakhir dalam otentikasi berbasis kunci SSH yang berhasil.

Berbagi kunci

Agar semua ini berfungsi, Anda perlu membagikan kunci publik Anda dengan mesin jarak jauh yang Anda coba SSH. Gunakan ssh-copy-id perintah untuk menyalin kunci publik Anda ke sistem tujuan. Secara default, jalur file adalah /home/user/.ssh/id_rsa.pub . Anda mengeluarkan perintah, tentukan file yang Anda bagikan, lalu pengguna/host yang kami bagikan. Seharusnya terlihat seperti ini:

[user@host ~] $ ssh-copy-id -i .ssh/key-with-pass.pub user@destination
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_rsa.pub"
/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
user@destination password: changeme
Number of key(s) added: 1

Sekarang setelah Anda membagikan kunci publik dengan host tujuan, Anda dapat mengautentikasi ke server jauh dengan meneruskan kunci pribadi yang cocok. Jika Anda menentukan jalur file untuk kunci pribadi Anda, Anda harus memberikannya di sini. Jika tidak, defaultnya adalah /home/_user_/.ssh/id_rsa .

Lihat di sini:

[user@host ~]$ ssh -i .ssh/key-with-password user@desination 
Enter passphrase for key '.ssh/key-with-password' : password here if you set one
[user@destination ~] $

Keuntungan dan ringkasan

Keuntungan menggunakan otentikasi berbasis kunci SSH jelas. Kata sandi dicuri setiap hari, terutama karena kesalahan manusia tetapi juga karena keterampilan dan tekad penyerang. Kunci terenkripsi, dan lebih khusus lagi, kunci terenkripsi yang dilindungi kata sandi, membuat otentikasi SSH Anda semakin sulit untuk diserang. Anda masih perlu mencapai keseimbangan antara ketersediaan dan keamanan, tetapi hal itu ditangani secara berbeda di setiap lingkungan.

[ Kursus online gratis:Tinjauan teknis Red Hat Enterprise Linux. ]


Linux
  1. Kiat Linux untuk menggunakan cron untuk menjadwalkan tugas

  2. Menggunakan AppImage untuk manajemen paket Linux

  3. 10 tutorial perintah Linux untuk pemula dan ahli

  1. Tip dan trik menggunakan CUPS untuk mencetak dengan Linux

  2. Menggunakan GPG untuk Mengenkripsi dan Mendekripsi File di Linux [Langsung untuk Pemula]

  3. Panduan Lengkap untuk Menggunakan AsciiDoc di Linux

  1. Lembar contekan untuk pengguna dan izin Linux

  2. Cara Mengonfigurasi Otentikasi Berbasis Kunci SSH Di Linux

  3. Apakah server Linux yang menggunakan AD/Kerberos untuk autentikasi/otorisasi memerlukan akun komputer?