GNU/Linux >> Belajar Linux >  >> Linux

SSH tanpa kata sandi menggunakan pasangan kunci publik-swasta

Jika Anda berinteraksi secara teratur dengan perintah SSH dan host jarak jauh, Anda mungkin menemukan bahwa menggunakan pasangan kunci alih-alih kata sandi bisa menjadi hal yang nyaman. Alih-alih sistem jarak jauh meminta kata sandi dengan setiap koneksi, otentikasi dapat secara otomatis dinegosiasikan menggunakan pasangan kunci publik dan pribadi.

Kunci pribadi tetap aman di stasiun kerja Anda sendiri, dan kunci publik ditempatkan di lokasi tertentu pada setiap sistem jarak jauh yang Anda akses. Kunci pribadi Anda mungkin diamankan secara lokal dengan frasa sandi. Program caching lokal seperti ssh-agent atau gnome-keyring memungkinkan Anda memasukkan frasa sandi itu secara berkala, alih-alih setiap kali Anda menggunakan kunci untuk mengakses sistem jarak jauh.

[ Unduhan gratis:Lembar contekan perintah Linux tingkat lanjut. ]

Membuat pasangan kunci dan menyebarkan kunci publik

Membuat pasangan kunci Anda dan menyebarkan kunci publik Anda lebih sederhana daripada kedengarannya. Mari kita jalani.

Membuat kunci

Upaya minimum untuk menghasilkan pasangan kunci melibatkan menjalankan ssh-keygen perintah, dan memilih default di semua petunjuk:

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

Lokasi default untuk menyimpan kunci ada di ~/.ssh direktori, yang akan dibuat jika tidak ada:

$ ls -al .ssh
total 16
drwx------. 2 training training 4096 Aug 12 07:43 .
drwx------. 5 training training 4096 Aug 12 07:43 ..
-rw-------. 1 training training 1843 Aug 12 07:43 id_rsa
-rw-r--r--. 1 training training  415 Aug 12 07:43 id_rsa.pub

Mengizinkan perintah ini membuat direktori juga memastikan bahwa pemilik dan izin disetel dengan benar. Beberapa aplikasi tidak akan menggunakan kunci jika izin ke kunci pribadi terlalu terbuka.

File yang diakhiri dengan .pub adalah kunci publik yang perlu ditransfer ke sistem jarak jauh. Ini adalah file yang berisi satu baris:Protokol, kunci, dan email yang digunakan sebagai pengenal. Opsi untuk ssh-keygen perintah memungkinkan Anda untuk menentukan pengenal yang berbeda:

$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ4SCcMX1EK31G/qLyCs3PaFcWkx0QA61OwQNHYztvrg7iD/etN4S5UP6ugHjTcUvqD/fZJFBJeryK0Hz0FzejKYiJBxQuUqadyXFSW30VnW6mAzgNoz20rGc2mipUrsaqdBWWv5U7vX8sgjEHEgVHzq6pfWj681PtikJ8Dss1IvPiPvOoRz2jb1dQnnrAVqMDGeWbm4yjYQamPvnLo1Hy23NgXpZ7KXv9PuDDu3tqcoMUqFk7sHswMrCCUY9SWOD5JBbhD3JX4LPs68WWbETOqOQ3a9ebTsL3wRPSbuu/djhL9Qmd8fN2OaM2U2zFpeE3NzBq4KT/ml6RTv44EMuh [email protected]

Setelah membuat pasangan kunci, ssh-keygen perintah juga menampilkan sidik jari dan gambar randomart yang unik untuk kunci ini. Informasi ini dapat dibagikan dengan orang lain yang mungkin perlu memverifikasi kunci publik Anda.

Nanti Anda dapat melihatnya dengan:

$ ssh-keygen -lv
Enter file in which the key is (/home/training/.ssh/id_rsa): 

-l opsi mencantumkan sidik jari, dan -v opsi menambahkan seni ASCII.

Menyebarkan kunci publik ke sistem jarak jauh

Jika otentikasi kata sandi saat ini diaktifkan, maka cara termudah untuk mentransfer kunci publik ke host jarak jauh adalah dengan ssh-copy-id memerintah. Jika Anda menggunakan nama default untuk kunci, yang perlu Anda tentukan hanyalah pengguna dan host jarak jauh:

$ ssh-copy-id susan@streamer
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/training/.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
susan@streamer's password: 

Number of key(s) added: 1

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

Mengikuti instruksi dari output, verifikasi bahwa Anda dapat terhubung menggunakan pasangan kunci. Jika Anda menerapkan frasa sandi, Anda akan diminta frasa sandi untuk menggunakan kunci pribadi:

$ ssh susan@streamer
Last login: Sat Aug 10 14:09:33 2019 from X.X.X.X

Periksa file kunci resmi yang dihasilkan. Di sinilah kunci publik ditambahkan. Jika direktori atau file tidak ada, maka itu (atau mereka) dibuat dengan kepemilikan dan izin yang benar. Setiap baris adalah satu kunci publik resmi:

[susan@streamer ~]$ cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ4SCcMX1EK31G/qLyCs3PaFcWkx0QA61OwQNHYztvrg7iD/etN4S5UP6ugHjTcUvqD/fZJFBJeryK0Hz0FzejKYiJBxQuUqadyXFSW30VnW6mAzgNoz20rGc2mipUrsaqdBWWv5U7vX8sgjEHEgVHzq6pfWj681PtikJ8Dss1IvPiPvOoRz2jb1dQnnrAVqMDGeWbm4yjYQamPvnLo1Hy23NgXpZ7KXv9PuDDu3tqcoMUqFk7sHswMrCCUY9SWOD5JBbhD3JX4LPs68WWbETOqOQ3a9ebTsL3wRPSbuu/djhL9Qmd8fN2OaM2U2zFpeE3NzBq4KT/ml6RTv44EMuh [email protected]

Untuk mencabut akses pasangan kunci ini, hapus baris untuk kunci publik.

Ada banyak opsi lain yang dapat ditambahkan ke baris ini di file kunci resmi untuk mengontrol akses. Opsi ini biasanya digunakan oleh administrator yang menempatkan kunci publik pada sistem dengan batasan. Pembatasan ini mungkin termasuk di mana koneksi mungkin berasal, perintah apa yang dapat dijalankan, dan bahkan tanggal yang menunjukkan kapan harus berhenti menerima kunci ini. Opsi ini dan opsi lainnya tercantum di sshd halaman manual.

Mengubah frasa sandi

Jika Anda perlu mengubah frasa sandi pada kunci pribadi Anda atau jika Anda awalnya menetapkan frasa sandi kosong dan menginginkan perlindungan itu di lain waktu, gunakan ssh-keygen perintah dengan -p pilihan:

$ ssh-keygen -p
Enter file in which the key is (/home/training/.ssh/id_rsa): 
Key has comment '[email protected]'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

Anda dapat menambahkan opsi tambahan untuk menentukan kunci (-f ), dan yang lama (-P ) atau baru (-N ) frasa sandi pada baris perintah. Ingatlah bahwa kata sandi apa pun yang ditentukan pada baris perintah akan disimpan dalam riwayat shell Anda.

Lihat ssh-keygen halaman manual untuk opsi tambahan.

Tombol berputar

Sementara kunci publik itu sendiri dimaksudkan untuk dibagikan, perlu diingat bahwa jika seseorang memperoleh kunci pribadi Anda, mereka kemudian dapat menggunakannya untuk mengakses semua sistem yang memiliki kunci publik. Pasangan kunci ini juga tidak memiliki masa berlaku seperti kunci GNU Privacy Guard (GPG) atau sertifikat infrastruktur kunci publik (PKI).

Jika Anda memiliki alasan untuk mencurigai bahwa kunci pribadi telah dicuri atau disusupi, Anda harus mengganti pasangan kunci tersebut. Kunci publik lama harus dihapus dari semua sistem, kunci baru harus dibuat dengan ssh-keygen , dan kunci publik baru harus ditransfer ke sistem jarak jauh yang diinginkan.

Jika Anda merotasi kunci sebagai tindakan pencegahan dan tanpa khawatir akan kompromi, Anda dapat menggunakan pasangan kunci lama untuk mengautentikasi transfer kunci publik baru sebelum menghapus kunci lama.

Apakah menggunakan frasa sandi kosong merupakan ide yang bagus?

Ada beberapa hal yang perlu dipikirkan saat mempertimbangkan frasa sandi kosong untuk kunci pribadi SSH Anda.

Seberapa aman file kunci pribadi?

Jika Anda cenderung bekerja dari beberapa sistem klien dan ingin memiliki banyak salinan kunci Anda atau menyimpan salinan di media yang dapat dipindahkan, maka sebaiknya Anda memiliki frasa sandi pada kunci pribadi. Praktik ini selain melindungi akses ke file kunci dengan media terenkripsi.

Namun, jika Anda hanya memiliki satu salinan kunci pribadi dan disimpan di sistem yang diamankan dengan baik dan tidak dibagikan, maka memiliki frasa sandi hanyalah satu tingkat perlindungan lagi untuk berjaga-jaga.

Ingatlah bahwa mengubah frasa sandi pada satu salinan tidak mengubah frasa sandi pada salinan lainnya. Frasa sandi hanya mengunci akses ke file kunci tertentu.

Mengapa menurut Anda Anda memerlukan frasa sandi kosong?

Ada kasus untuk kunci dengan frasa sandi kosong. Beberapa utilitas yang perlu secara otomatis mentransfer file antar sistem memerlukan metode tanpa kata sandi untuk mengautentikasi. kdump utilitas, ketika dikonfigurasi untuk membuang kernel ke sistem jarak jauh menggunakan SSH, adalah salah satu contohnya.

Penggunaan umum lainnya adalah untuk menghasilkan pasangan kunci untuk skrip yang dirancang untuk berjalan tanpa pengawasan, seperti dari tugas cron.

Bagaimana dengan alternatif jalan tengah?

Dengan sendirinya, kunci pribadi yang dilindungi frasa sandi mengharuskan frasa sandi dimasukkan setiap kali kunci digunakan. Pengaturan ini tidak terasa seperti SSH tanpa kata sandi. Namun, ada mekanisme caching yang memungkinkan Anda memasukkan frasa sandi kunci satu kali dan kemudian menggunakan kunci tersebut berulang kali tanpa memasukkan kembali frasa sandi tersebut.

OpenSSH hadir dengan ssh-agent daemon dan ssh-add utilitas untuk menyimpan kunci pribadi yang tidak terkunci. Desktop GNOME juga memiliki daemon keyring yang menyimpan kata sandi dan rahasia tetapi juga mengimplementasikan agen SSH.

Masa pakai kunci yang di-cache dapat dikonfigurasi dengan masing-masing agen atau ketika kunci ditambahkan. Dalam banyak kasus, defaultnya adalah seumur hidup yang tidak terbatas, tetapi cache dihapus ketika pengguna keluar dari sistem. Anda akan dimintai kata sandi hanya sekali per sesi login.

Jika ada aplikasi terjadwal yang perlu dijalankan di luar sesi login pengguna, dimungkinkan untuk menggunakan rahasia atau pengelola kata sandi lainnya untuk mengotomatiskan pembukaan kunci. Misalnya, Ansible Tower menyimpan kredensial dalam database yang aman. Basis data ini mencakup kunci pribadi SSH yang digunakan untuk terhubung ke sistem jarak jauh (node ​​yang dikelola), dan frasa sandi apa pun yang diperlukan untuk kunci pribadi tersebut. Setelah kredensial tersebut disimpan, pekerjaan dapat dijadwalkan untuk menjalankan buku pedoman pada jadwal reguler.

Mengotomatiskan propagasi

Manajer identitas terpusat seperti FreeIPA dapat membantu propagasi kunci. Unggah kunci publik ke server sebagai atribut akun pengguna, lalu sebarkan ke host di domain sesuai kebutuhan. FreeIPA juga dapat menyediakan kontrol akses berbasis host tambahan untuk tempat kunci dapat digunakan.

Kunci juga dapat didistribusikan menggunakan modul Ansible. openssh_keypair modul menggunakan ssh-keygen untuk membuat kunci dan authorized_key modul menambahkan dan menghapus kunci resmi SSH untuk akun pengguna tertentu.

Menutup

Pasangan kunci SSH hanya satu cara untuk mengotomatisasi otentikasi tanpa kata sandi. Menggunakan autentikasi Antarmuka Program Aplikasi Layanan Keamanan Umum (GSSAPI) juga umum dilakukan saat mencoba mengurangi penggunaan sandi di jaringan dengan pengelolaan pengguna terpusat. Pasangan kunci SSH adalah opsi yang lebih mudah untuk diterapkan saat sistem masuk tunggal (SSO) belum tersedia.

Banyak repositori kode sumber memberikan akses menggunakan kunci SSH. Anda dapat mengunggah kunci publik ke akun di organisasi hosting seperti Sistem Akun Fedora, GitLab, atau situs GitHub dan menggunakan pasangan kunci itu untuk mengautentikasi saat menarik dan mendorong konten ke repositori.


Linux
  1. Cara Menggunakan Perintah ssh-keygen untuk mengkonfigurasi ssh tanpa kata sandi

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

  3. Bagaimana menghindari ssh dari meminta frasa sandi kunci untuk login tanpa kata sandi

  1. Cara mengkonfigurasi kunci SSH menggunakan cPanel

  2. Login SSH tidak berfungsi menggunakan kunci Tanpa Kata Sandi?

  3. Menggunakan Kunci Pribadi SSH yang Sama di Beberapa Mesin

  1. Terhubung ke server dengan menggunakan SSH di Linux atau Mac OS X

  2. Kelola Pasangan Kunci SSH untuk server cloud dengan python-novaclient

  3. Cara Mengatur kunci SSH untuk login ssh "tanpa kata sandi" di Linux