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 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:
OutputGenerating 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:
OutputEnter 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:
OutputYour 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.
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).
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:
OutputThe 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:
OutputNumber 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.
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:
OutputThe 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:
Outputusername@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.
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:
Outputssh-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.
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:
OutputThe 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.
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:
. . .
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.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.