Sediakan log masuk tanpa kata laluan selamat ke pelayan Ubuntu jauh anda menggunakan kekunci SSH
SSH ialah protokol rangkaian pelayan-pelanggan yang selamat yang membantu komputer pelanggan menyambung dan berkomunikasi ke pelayan jauh. Sambungan SSH memastikan bahawa arahan yang ditaip dalam terminal dihantar ke pelayan jauh melalui saluran yang disulitkan.
Terdapat dua jenis mekanisme pengesahan yang digunakan untuk menyambung ke pelayan jauh, pengesahan berasaskan kata laluan (terdedah kepada serangan Brute-force) dan pengesahan berasaskan SSH Keys (yang sangat selamat).
Dalam pengesahan berasaskan kunci SSH, pasangan kunci dijana pada komputer klien, dipanggil sebagai kunci awam dan kunci persendirian. Salinan kunci awam ini disediakan pada pelayan jauh. Apabila pelanggan menghantar permintaan sambungan kepada pelayan maka pelayan menjana rentetan rawak dan menyulitkannya menggunakan kunci awam. Rentetan ini hanya boleh dinyahsulit menggunakan kunci persendirian yang tersedia pada komputer klien. Kaedah ini memastikan pelayan hanya boleh diakses oleh pelanggan yang mengandungi kunci persendirian.
Dalam panduan ini, kita akan melihat cara menyediakan Kekunci SSH pada pelayan Ubuntu 20.04 LTS.
Lihat jika anda mempunyai sebarang Kunci SSH sedia ada pada komputer anda
Untuk menyemak sama ada SSH Keypair sudah wujud pada komputer anda taip arahan ini dalam terminal anda.
ls -l ~/.ssh/id_*.pub
Jika arahan di atas kembali tiada fail atau direktori sedemikian
atau tiada padanan ditemui
, maka ia bermakna pasangan Kunci SSH tidak wujud.
Jika anda mempunyai pasangan kunci SSH sedia ada, maka anda boleh sama ada menggunakan pasangan kunci yang sama untuk mengakses dua pelayan jauh, atau anda juga boleh mencipta pasangan kunci berbeza yang mempunyai nama yang berbeza. Mari kita teruskan ke langkah seterusnya dan lihat cara menjana kunci SSH untuk kedua-dua kes.
Mencipta Kunci SSH pada Komputer Pelanggan
Untuk menjana pasangan kunci SSH baharu pada komputer anda taip arahan seperti yang ditunjukkan di bawah.
ssh-keygen
Secara lalai, kunci SSH adalah 2048 bit. Untuk keselamatan yang lebih baik, jika anda ingin menjana kunci SSH dengan bit yang lebih tinggi, kemudian gunakan arahan berikut.
ssh-keygen -b 4096
Jika arahan berjalan dengan jayanya, maka mesej berikut akan digesa pada skrin anda.
menjana pasangan kunci rsa awam/swasta. Masukkan fail untuk menyimpan kunci (/home/harshit/.ssh/id_rsa):
Sekarang jika anda tidak mempunyai pasangan kunci SSH sedia ada pada komputer anda, tekan sahaja Masuk
, tetapi jika anda mempunyai kunci SSH sedia ada maka simpan kunci dengan nama fail yang berbeza seperti yang ditunjukkan di bawah.
Masukkan fail untuk menyimpan kunci (/home/nama_anda/.ssh/id_rsa): /home/nama_anda/.ssh/id_rsa_xxx
Gantikan xxx
pada akhir nama fail dengan nama yang sesuai, seperti yang ditunjukkan di bawah dan tekan Masuk
.
Masukkan fail untuk menyimpan kunci (/home/nama_anda/.ssh/id_rsa): /home/nama_anda/.ssh/id_rsa_client_1
Gesaan seterusnya akan meminta anda memasukkan frasa laluan dengan panjang sewenang-wenangnya, ia akan memastikan keselamatan dua peringkat pada peranti anda.
Masukkan frasa laluan (kosong untuk tiada frasa laluan): Masukkan frasa laluan yang sama sekali lagi:
Memasukkan frasa laluan ini akan memastikan bahawa walaupun seseorang mendapat akses kepada kunci peribadi anda, maka dia tidak akan dapat mengakses pelayan jauh anda tanpa frasa laluan ini.
Setelah keseluruhan proses selesai, mesej berikut muncul pada skrin anda.
Kunci SSH telah dijana pada sistem anda. Kini tiba masanya untuk menyalin kunci awam pada pelayan jauh.
Menyalin kunci Awam ke Pelayan Ubuntu Jauh
Kaedah termudah dan terpantas untuk menyalin kunci Awam ke pelayan jauh adalah dengan menggunakan ssh-copy-id
utiliti. Tetapi jika utiliti ini tidak tersedia pada mesin anda atas sebab tertentu maka anda juga boleh menggunakan kaedah lain yang disediakan dalam bahagian ini.
Menggunakan utiliti ssh-copy-id
The ssh-copy-id
utiliti secara lalai tersedia pada mesin Ubuntu anda yang menyalin kunci awam dari peranti anda ke direktori yang sesuai untuk mesin Ubuntu jauh anda.
Untuk menyalin kunci ssh awam hanya taip arahan dalam terminal anda, seperti yang ditunjukkan di bawah.
ssh-copy-id nama pengguna@nama hos
Gantikan nama pengguna
dan nama hos
dalam arahan di atas dengan nama pengguna dan nama hos pelayan anda.
Mesej berikut akan muncul pada terminal anda jika anda menyambung ke hos anda buat kali pertama, taip ya
dan tekan Masuk
.
Ketulenan hos' 172.105.XX.XX (172.105.XX.XX)' tidak dapat dipastikan. Cap jari kunci ECDSA ialah xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Adakah anda pasti mahu terus menyambung (ya/tidak)? ya
Sekarang ssh-copy-id
utiliti akan mengimbas fail dengan nama id_rsa.pub
yang mengandungi kunci SSH awam. Setelah proses pengimbasan selesai, ia akan menggesa anda untuk memasukkan kata laluan pelayan jauh anda, seperti yang ditunjukkan di bawah. Taip kata laluan dan tekan Masuk
.
/usr/bin/ssh-copy-id: INFO: cuba log masuk dengan kunci baharu, untuk menapis mana-mana yang telah dipasang /usr/bin/ssh-copy-id: INFO: 1 kunci ) kekal dipasang -- jika anda digesa sekarang, ia adalah untuk memasang kekunci baharu [email protected] kata laluan:
Setelah kunci ditambahkan, mesej berikut akan muncul pada terminal anda sebagai output.
Bilangan kunci yang ditambahkan: 1 Sekarang cuba log masuk ke mesin, dengan: "ssh '[email protected]'" dan semak untuk memastikan bahawa hanya kunci yang anda inginkan telah ditambahkan.
Sekiranya anda mempunyai berbilang kunci SSH pada komputer klien anda, maka untuk menyalin kunci awam yang sesuai ke komputer jauh anda taip arahan dalam corak yang ditunjukkan di bawah.
ssh-copy-id -i id_rsa_xxx.pub username@host
💡 Petua
Jangan lupa untuk meletakkan .pub di hujung nama fail semasa menaip di terminal.
Menyalin Kunci Awam dengan kaedah paip
Taip arahan berikut dalam terminal jika ssh-copy-id
utiliti tidak tersedia. Perintah ini mungkin kelihatan sedikit lebih lama tetapi ia berfungsi dengan sewajarnya.
kucing ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && sentuh ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Gantikan remote_username
dan alamat_ip_server
dengan nama pengguna dan alamat IP anda.
Jika anda mempunyai berbilang kunci SSH yang tersedia pada komputer anda kemudian gantikan id_rsa.pub
dengan fail kunci SSH awam pilihan anda. Sebagai contoh, id_rsa_client_1.pub
.
Taip kata laluan pengguna jauh apabila digesa dan tekan Masuk
.
kata laluan [email protected]:
Sebaik sahaja anda menaip kata laluan, id_rsa.pub
fail akan disalin ke kunci_benar
fail pelayan jauh.
Menyalin Kunci Awam secara manual
Gunakan kaedah ini apabila anda tidak mempunyai akses kepada sistem jauh anda melalui pengesahan kata laluan.
Buka id_rsa.pub
fail menggunakan kucing
arahan dalam terminal. Anda juga boleh membukanya dari editor teks, tujuannya hanya untuk menyalin kandungan fail.
kucing ~/.ssh/id_rsa.pub
Kandungan fail akan kelihatan seperti, seperti yang ditunjukkan di bawah.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH nama_anda @ your_PC
Sekarang, log masuk ke pelayan jauh anda dan tampal kandungan yang disalin menggunakan arahan yang ditunjukkan di bawah. Gantikan rentetan_atas
dengan kandungan yang disalin.
echo above_string >> ~/.ssh/authorized_keys
Mengkonfigurasi berbilang Kunci SSH (Pilihan)
Langkah ini adalah untuk orang yang mempunyai berbilang persediaan Kunci SSH pada komputer klien mereka. Langkau bahagian ini jika anda hanya mempunyai satu persediaan Kunci SSH.
Untuk mengurus berbilang Kunci SSH, kami kini akan mencipta a konfigurasi
fail di dalam .ssh
direktori menggunakan arahan yang ditunjukkan di bawah.
cd ~/.ssh vim config
taip i
untuk masuk ke dalam mod arahan dan taip butiran berbilang hos, seperti yang ditunjukkan dalam contoh berikut:
Hos remote-ubuntu-server HostName 172.105.XX.XX User root IdentityFile ~/.ssh/id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX User root IdentityFile ~/.ssh/id_rsa_client_2
Begitu juga, taip butiran pelayan jauh lain dan kuncinya. Setelah proses selesai tekan Esc
dan :wq
untuk menyimpan dan keluar.
Kini proses seterusnya adalah sama untuk kedua-duanya mempunyai Kunci SSH tunggal atau berbilang pada komputer klien.
Log masuk ke pelayan jauh anda menggunakan kekunci SSH
Setelah proses menyalin kunci Awam anda selesai, log masuk ke pelayan jauh anda dengan menaip arahan seperti yang ditunjukkan di bawah.
ssh remote_username@server_ip_address
Jika anda membekalkan frasa laluan semasa menjana pasangan kunci maka anda akan digesa untuk memasukkannya. Sesi baharu akan dibuka selepas proses pengesahan selesai.
Anda kini telah berjaya mengkonfigurasi pengesahan berasaskan kunci SSH pada pelayan jauh anda. Tetapi pengesahan berasaskan kata laluan masih aktif pada pelayan anda, ini bermakna pelayan jauh anda masih terdedah kepada serangan brute-force.
Jadi sekarang kami akan melumpuhkan mekanisme log masuk berasaskan kata laluan sepenuhnya daripada pelayan jauh kami.
Lumpuhkan Mekanisme Log Masuk berasaskan kata laluan
Sebelum anda membuat sebarang perubahan, pastikan pengguna root atau mana-mana pengguna yang didayakan sudo untuk akaun jauh anda mempunyai akses kepada pelayan anda menggunakan sistem pengesahan berasaskan kunci SSH. Langkah ini akan mengunci atau melumpuhkan log masuk berasaskan kata laluan sepenuhnya jadi adalah penting bahawa sekurang-kurangnya satu keistimewaan root pengguna mempunyai akses kepada pelayan melalui kunci SSH.
Log masuk ke pelayan Ubuntu jauh anda dan taip arahan yang ditunjukkan di bawah.
sudo vim /etc/ssh/sshd_config
- Tekan
Esc
,/
dan taip 'PasswordAuthentication' dan tekanmasuk
. - Sekarang tekan
i
dan tukar nilai 'PasswordAuthentication yes' kepada 'PasswordAuthentication no'. - Tekan
Esc
dan ulangi proses di atas untuk mencari 'ChallengeResponseAuthentication', 'UsePAM', dan menukar nilainya kepadatidak
juga.
Pengesahan Kata Laluan tiada ChallengeResponseAuthentication tiada PenggunaanPAM no
Setelah semua nilai ditetapkan kepada tidak
, tekan Esc
, taip :wq
dan pukul masuk
.
Untuk mengaktifkan semua perubahan mulakan semula ssh
perkhidmatan menggunakan arahan di bawah.
sudo systemctl mulakan semula ssh
Sekarang buka tetingkap terminal baharu pada komputer anda dan sahkan bahawa pengesahan Kunci SSH anda berfungsi dengan betul sebelum menutup sesi semasa.
Setelah proses pengesahan selesai, tutup semua sesi yang sedang berjalan.
Kami kini telah berjaya mengkonfigurasi pengesahan berasaskan Kunci SSH pada pelayan Ubuntu 20.04 kami. Kini tiada siapa yang boleh log masuk ke pelayan anda menggunakan mekanisme log masuk berasaskan kata laluan.