Konfigurasi Klien
Mempersiapkan ~/.ssh/config
Menyiapkan entri host ssh
sangat mudah dan akan menghemat banyak masalah. Berikut ini sebuah contoh:
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
Dalam contoh ini, kami mengatur digitaloceanbox
dan github
dan github.com
agar kami dapat melakukan perintah berikut:
ssh github
ssh digitaloceanbox
Jika kami ingin masuk sebagai pengguna yang berbeda dari yang ditentukan dalam file konfigurasi, kami hanya meletakkan user@
di awal:
Membuat ssh
kunci
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
Perhatikan bahwa saya telah menentukan path lengkap kunci pribadi yang ingin saya hasilkan ketika diminta oleh ssh-keygen
. Saya juga mendefinisikan komentar ( -C
) yang memungkinkan saya untuk dengan mudah mengidentifikasi kunci pada mesin jarak jauh.
Ini akan membuat dua file:
.ssh/digitalocean-rsa
- Kunci PRIVATE . Jangan pernah berbagi ini .
.ssh/digitalocean-rsa.pub
- Kunci publik. Ini yang Anda simpan di server untuk otentikasi.
Ketika Anda memberikan ssh
kunci Anda , pastikan itu .pub
versinya !! Ketika Anda menambahkan ke Anda ~/.ssh/config
, pastikan untuk menambahkan kunci pribadi yang benar yang cocok dengan kunci publik yang Anda tambahkan ke sistem.
Konfigurasi Server
Sebagian besar instalasi akan datang dengan Otentikasi Kunci Publik diaktifkan. Namun, jika Anda mulai melakukan semua hal dengan sendirinya, Anda mungkin akan mengalami beberapa masalah. Di tempat OP berada dalam masalah mereka, saya sarankan OP menghapus /root/.ssh/
direktori untuk memulai kembali.
Anda tidak disarankan ssh
untuk mengakses pengguna root di sistem jarak jauh. Dianjurkan agar Anda ssh
menjadi pengguna lain, dan kemudian naik ke root menggunakan kata sandi Anda ( sudo su -
).
Tambahkan kunci ke host menggunakan ssh-copy-id
Terlepas dari apakah Anda memutuskan untuk membuat pengguna lain dan menggunakan ssh
sebagai pengguna itu, atau pengguna root, berikut ini adalah cara yang disarankan untuk menempatkan ssh
kunci di server:
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Ini memungkinkan sshd
untuk membuat direktori dan file yang dibutuhkan dengan izin yang diperlukan. Ini berarti tidak ada peluang bagi Anda untuk mengacaukan izin atau perlu mengingat detailnya. Cukup gunakan alat untuk mengunggah kunci.
Nonaktifkan Otentikasi Kata Sandi
Yang sedang berkata, setelah Anda memiliki kunci sendiri dan memverifikasi bahwa Anda dapat terhubung menggunakan kunci, disarankan agar Anda menonaktifkan Otentikasi Kata Sandi di sshd
dan memulai kembali layanan:
- Edit
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
Bagaimana dengan pengguna baru?
Jika Anda menonaktifkan Otentikasi Kata Sandi, bagaimana Anda dapat memasukkan pengguna baru? Salah satu caranya adalah dengan menambahkan file template ke /etc/skel
direktori. Setelah Anda mengetikkan satu pengguna, lakukan hal berikut:
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
- Edit semua file yang ditemukan
/etc/skel/.ssh/
sehingga kosong, kecuali jika Anda ingin memasukkan sendiri secara otomatis untuk setiap pengguna yang baru dibuat.
Saat Anda membuat pengguna baru sudo useradd -m newuser
, pengguna itu akan memiliki .ssh/authorized_keys
, yang dapat Anda edit dan akan memiliki izin yang tepat.
Debugging
Anda dapat menonton sshd
file log untuk melihat mengapa koneksi gagal atau ditolak:
sudo tail -f /var/log/auth.log
Saat Anda menjalankan perintah ini, gunakan terminal lain untuk mencoba login. Sering kali pesan yang diberikan cukup baik untuk membantu menunjukkan masalah, atau menemukan solusi online.