Tutorial

Cara Menyiapkan Kunci SSH pada Ubuntu 20.04

Linux BasicsUbuntuGetting StartedSecuritySystem ToolsUbuntu 20.04

Pengantar

SSH, atau secure shell, adalah protokol terenkripsi yang digunakan untuk mengelola dan berkomunikasi dengan server. Ketika bekerja dengan server Ubuntu, kemungkinan Anda akan menghabiskan sebagian besar waktu Anda dalam sesi terminal yang terhubung ke server Anda melalui SSH.

Dalam panduan ini, kita akan berfokus pada penyiapan kunci SSH untuk instalasi Ubuntu 20.04. Kunci SSH menyediakan cara yang aman untuk log masuk ke server Anda dan disarankan untuk semua pengguna.

Langkah 1 — Menciptakan Pasangan Kunci

Langkah pertama adalah menciptakan pasangan kunci pada mesin klien (biasanya komputer Anda):

  • ssh-keygen

Secara asali, versi terbaru dari ssh-keygen akan menciptakan pasangan kunci RSA 3072-bit, yang cukup aman untuk kebanyakan kasus penggunaan (Anda dapat secara opsional memasukkan bendera -b 4096 untuk menciptakan kunci 4096-bit yang lebih besar).

Setelah memasukkan perintah, Anda akan melihat keluaran berikut:

Output
Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):

Tekan enter untuk menyimpan pasangan kunci ke subdirektori .ssh/ di dalam direktori rumah Anda, atau tentukan jalur alternatif.

Jika Anda sebelumnya telah menghasilkan pasangan kunci SSH, Anda mungkin melihat prompt berikut:

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

Jika Anda memilih untuk menimpa kunci pada diska, Anda tidak akan bisa lagi melakukan autentikasi menggunakan kunci sebelumnya. Berhati-hatilah saat memilih ya, karena ini adalah proses destruktif yang tidak dapat dikembalikan.

Kemudian, Anda akan melihat prompt berikut:

Output
Enter passphrase (empty for no passphrase):

Di sini Anda secara opsional dapat memasukkan frasa sandi yang aman, yang merupakan sesuatu yang sangat disarankan. Frasa sandi menambahkan lapisan keamanan tambahan untuk mencegah pengguna yang tidak sah untuk log masuk. Untuk mempelajari lebih lanjut tentang keamanan, lihat tutorial kami tentang Cara Mengonfigurasi Autentikasi Berbasis Kunci SSH pada Server Linux.

Kemudian, Anda akan melihat keluaran mirip seperti ini:

Output
Your identification has been saved in /your_home/.ssh/id_rsa Your public key has been saved in /your_home/.ssh/id_rsa.pub The key fingerprint is: SHA256:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host The key's randomart image is: +---[RSA 3072]----+ | .| | + | | + | | . o . | |o S . o | | + o. .oo. .. .o| |o = oooooEo+ ...o| |.. o *o+=.*+o....| | =+=ooB=o.... | +----[SHA256]-----+

Anda kini memiliki kunci publik dan pribadi yang Anda dapat gunakan untuk melakukan autentikasi. Langkah selanjutnya adalah menempatkan kunci publik pada server Anda sehingga Anda dapat menggunakan autentikasi berbasis kunci SSH untuk log masuk.

Langkah 2 — Menyalin Kunci Publik ke Server Ubuntu Anda

Cara tercepat untuk menyalin kunci publik Anda ke hos Ubuntu adalah menggunakan utilitas bernama ssh-copy-id. Karena kemudahannya, metode ini sangat disarankan jika tersedia. Jika Anda tidak memiliki ssh-copy-id yang tersedia bagi Anda di mesin klien, Anda dapat menggunakan salah satu dari dua metode alternatif yang disediakan di bagian ini (menyalin melalui SSH berbasis kata sandi, atau menyalin kunci secara manual).

Menyalin Kunci Publik Menggunakan ssh-copy-id

Alat ssh-copy-id disertakan secara asali dalam banyak sistem operasi, sehingga Anda mungkin telah memilikinya di sistem lokal Anda. Agar metode ini bekerja, Anda harus sudah memiliki akses SSH berbasis kata sandi ke server Anda.

Untuk menggunakan utilitas ini, Anda menentukan hos jauh yang Anda ingin hubungkan, dan akun pengguna yang Anda miliki dengan akses SSH berbasis kata sandi. Ini adalah akun tempat menyalin kunci SSH publik Anda.

Sintaksnya adalah:

  • ssh-copy-id username@remote_host

Anda mungkin melihat pesan berikut:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

Ini berarti bahwa komputer lokal Anda tidak mengenali hos jauh. Ini akan terjadi saat pertama kali Anda terhubung ke hos baru. Ketik “yes"dan tekan ENTER untuk melanjutkan.

Selanjutnya, utilitas akan memindai akun lokal Anda untuk mencari kunci id_rsa.pub yang kita ciptakan sebelumnya. Ketika utilitas menemukan kuncinya, utilitas akan menanyakan kata sandi dari akun pengguna jauh:

Output
/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 username@203.0.113.1's password:

Masukkan kata sandi (pengetikan Anda tidak akan ditampilkan untuk keamanan) dan tekan ENTER. Utilitas akan terhubung ke akun pada hos jauh menggunakan kata sandi yang Anda berikan. Kemudian, utilitas akan menyalin konten dari kunci ~/.ssh/id_rsa.pub Anda ke berkas di dalam direktori ~/.ssh rumah dari akun jauh yang disebut authorized_keys.

Anda akan melihat keluaran berikut:

Output
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

Pada titik ini, kunci id_rsa.pub Anda telah diunggah ke akun jauh. Anda dapat melanjutkan ke Langkah 3.

Menyalin Kunci Publik Menggunakan SSH

Jika Anda tidak memiliki ssh-copy-id yang tersedia, tetapi Anda memiliki akses SSH berbasis kata sandi ke akun pada server, Anda dapat mengunggah kunci menggunakan metode SSH konvensional.

Kita dapat melakukan ini dengan penggunaan perintah cat untuk membaca konten dari kunci SSH publik pada komputer lokal kita dan menyalurkannya melalui koneksi SSH ke server jauh.

Di samping itu, kita dapat memastikan bahwa direktori ~/.ssh sudah ada dan memiliki izin yang benar di bawah akun yang kita gunakan.

Kemudian, kita dapat menghasilkan konten yang kita salurkan ke dalam suatu berkas bernama authorized_keys di dalam direktori ini. Kita akan menggunakan simbol pengalihan >> untuk memberikan tambahan pada konten alih-alih menimpanya. Ini akan memungkinkan kita untuk menambahkan kunci tanpa merusak kunci yang ditambahkan sebelumnya.

Perintah utuhnya terlihat seperti ini:

  • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Anda mungkin melihat pesan berikut:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

Ini berarti bahwa komputer lokal Anda tidak mengenali hos jauh. Ini akan terjadi saat pertama kali Anda terhubung ke hos baru. Ketik yes dan tekan ENTER untuk melanjutkan.

Setelah itu, Anda akan diminta untuk memasukkan kata sandi akun pengguna jauh:

Output
username@203.0.113.1's password:

Setelah memasukkan kata sandi Anda, konten dari kunci id_rsa.pub akan disalin ke bagian akhir berkas authorized_keys dari akun pengguna jauh. Lanjutkan ke Langkah 3 jika ini berhasil.

Menyalin Kunci Publik secara Manual

Jika Anda tidak memiliki akses SSH berbasis kata sandi ke server yang tersedia, Anda akan perlu menyelesaikan proses di atas secara manual.

Kita akan secara manual memberikan tambahan pada konten dari berkas id_rsa.pub Anda ke berkas ~/.ssh/authorized_keys pada mesin jauh Anda.

Untuk menampilkan konten dari kunci id_rsa.pub, ketik ini pada komputer lokal Anda:

  • cat ~/.ssh/id_rsa.pub

Anda akan melihat konten dari kunci itu, yang akan terlihat seperti ini:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

Akses hos jauh Anda menggunakan metode apa pun yang Anda miliki.

Setelah Anda memiliki akses ke akun Anda pada server jauh, Anda harus memastikan direktori ~/.ssh sudah ada. Perintah ini akan menciptakan direktori tersebut jika diperlukan, atau jangan lakukan apa pun jika direktorinya sudah ada:

  • mkdir -p ~/.ssh

Sekarang, Anda dapat menciptakan atau memodifikasi berkas authorized_keys di dalam direktori ini. Anda dapat menambahkan konten dari berkas id_rsa.pub ke bagian akhir dari berkas authorized_keys, atau menciptakannya jika diperlukan, dengan perintah ini:

  • echo public_key_string >> ~/.ssh/authorized_keys

Dalam perintah di atas, ganti public_key_string dengan keluaran dari perintah cat ~/.ssh/id_rsa.pub yang Anda eksekusi pada sistem lokal Anda. Keluaran itu dimulai dengan ssh-rsa AAAA....

Terakhir, kita akan memastikan bahwa direktori ~/.ssh dan berkas authorized_keys telah memiliki izin yang sesuai:

  • chmod -R go= ~/.ssh

Ini secara berulang menghapus semua izin "group” dan “other"dari direktori ~/.ssh/.

Jika Anda menggunakan akun root untuk menyiapkan kunci akun pengguna, maka penting untuk diingat bahwa direktori ~/.ssh dimiliki oleh pengguna dan bukan oleh root:

  • chown -R sammy:sammy ~/.ssh

Dalam tutorial ini, pengguna kita bernama sammy, tetapi Anda harus mengganti nama pengguna sesuai dengan perintah di atas.

Sekarang kita dapat mencoba autentikasi tanpa kata sandi dengan server Ubuntu kita.

Langkah 3 — Melakukan Autentikasi ke Server Ubuntu Anda Menggunakan Kunci SSH

Jika Anda telah berhasil menyelesaikan salah satu prosedur di atas, Anda akan dapat log masuk ke hos jauh tanpa memberikan kata sandi dari akun jauh.

Proses dasarnya sama:

  • ssh username@remote_host

Jika ini adalah kali pertama Anda terhubung ke hos ini (jika Anda menggunakan metode terakhir di atas), Anda mungkin melihat sesuatu seperti ini:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

Ini berarti bahwa komputer lokal Anda tidak mengenali hos jauh. Ketik "yes”, lalu tekan ENTER untuk melanjutkan.

Jika Anda tidak memasukkan frasa sandi untuk kunci pribadi, Anda akan segera log masuk. Jika Anda memasukkan frasa sandi untuk kunci pribadi ketika Anda menciptakan kunci tersebut, Anda akan diminta untuk memasukkannya sekarang (harap diperhatikan bahwa hasil pengetikan Anda tidak akan muncul dalam sesi terminal untuk alasan keamanan). Setelah melakukan autentikasi, sesi shell baru akan terbuka untuk Anda dengan akun yang terkonfigurasi di server Ubuntu.

Jika autentikasi berbasis kunci berhasil, lanjutkan untuk mempelajari cara mengamankan sistem Anda lebih lanjut dengan menonaktifkan autentikasi kata sandi.

Langkah 4 — Menonaktifkan Autentikasi Kata Sandi pada Server Anda

Jika Anda dapat log masuk ke akun Anda menggunakan SSH tanpa kata sandi, Anda telah berhasil mengonfigurasi autentikasi berbasis kunci SSH ke akun Anda. Namun, mekanisme autentikasi berbasis kata sandi Anda masih aktif, yang berarti bahwa server Anda masih terekspos oleh serangan brutal.

Sebelum menyelesaikan langkah-langkah di bagian ini, pastikan bahwa Anda memiliki autentikasi berbasis kunci SSH yang terkonfigurasi untuk akun root pada server ini, atau yang lebih baik, bahwa Anda memiliki autentikasi berbasis kunci SSH yang terkonfigurasi untuk akun non-root pada server ini dengan privilese sudo. Langkah ini akan mengunci log masuk berbasis kata sandi, sehingga memastikan bahwa Anda masih bisa mendapatkan akses administratif adalah hal yang krusial.

Setelah Anda mengonfirmasi bahwa akun jauh Anda memiliki privilese administratif, log masuk ke server jauh Anda dengan kunci SSH, baik sebagai root atau menggunakan akun dengan privilese sudo. Lalu, buka berkas konfigurasi dari daemon SSH:

  • sudo nano /etc/ssh/sshd_config

Di dalam berkas, cari suatu arahan bernama PasswordAuthentication. Baris ini mungkin dibuat menjadi komentar dengan # di awal baris. Hapus komentar dengan menghapus #, dan tetapkan nilai menjadi no. Ini akan menonaktifkan kemampuan Anda untuk log masuk melalui SSH dengan menggunakan kata sandi akun:

/etc/ssh/sshd_config
. . .
PasswordAuthentication no
. . .

Simpan dan tutup berkas saat Anda selesai dengan menekan CTRL+X, lalu Y untuk mengonfirmasi penyimpanan berkas tersebut, dan terakhir ENTER untuk keluar dari nano. Untuk benar-benar mengaktifkan perubahan ini, kita perlu memulai ulang layanan sshd:

  • sudo systemctl restart ssh

Sebagai tindakan pencegahan, buka jendela terminal baru dan uji apakah layanan SSH berfungsi dengan benar sebelum menutup sesi Anda saat ini:

  • ssh username@remote_host

Setelah Anda memverifikasi layanan SSH berfungsi dengan benar, Anda dapat menutup semua sesi server saat ini dengan aman.

Daemon SSH pada server Ubuntu Anda kini hanya merespons autentikasi berbasis kunci SSH. Log masuk berbasis kata sandi telah dinonaktifkan.

Kesimpulan

Kini, Anda telah memiliki autentikasi berbasis kunci SSH yang terkonfigurasi pada server Anda, yang mengizinkan Anda untuk masuk tanpa memberikan kata sandi akun.

Jika Anda ingin mempelajari lebih lanjut tentang bekerja dengan SSH, lihat Panduan Esensial SSH dari kami.

Creative Commons License