Berikut panduan untuk mengkoneksikan server ssh menggunakan ssh key
1. Membuat Kunci SSH
Langkah pertama untuk mengonfigurasi autentikasi kunci SSH ke server Anda adalah membuat kunci SSH di komputer lokal Anda.
Untuk melakukan ini, kita dapat menggunakan utilitas khusus yang disebut ssh-keygen, yang disertakan dengan rangkaian alat standar OpenSSH. Secara default, ini akan membuat kunci RSA 3072 bit.
Di komputer lokal Anda, buat pasangan kunci SSH dengan cara, ketik :
ssh-keygen
OutputGenerating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa):
Lalu Anda akan diminta untuk memilih lokasi untuk key yang akan dibuat. Secara default, key akan disimpan di direktori ~/.ssh di dalam direktori home pengguna Anda. Key privat akan disebut id_rsa dan kunci publik terkait akan disebut id_rsa.pub.
Biasanya, yang terbaik adalah tetap menggunakan lokasi default pada tahap ini. Lakukan allow SSH Anda secara otomatis akan menemukan kunci SSH Anda saat mencoba mengautentikasi. Jika Anda ingin memilih jalur non-standar, ketik sekarang, jika tidak, tekan ENTER untuk menerima default.
Jika sebelumnya Anda telah membuat pasangan kunci SSH, Anda mungkin melihat prompt seperti ini:
Output/home/username/.ssh/id_rsa already exists. Overwrite (y/n)?
Jika Anda memilih untuk menimpa key pada disk, Anda tidak akan dapat mengotentikasi menggunakan key sebelumnya lagi. Berhati-hatilah saat memilih, karena ini adalah proses destruktif yang tidak dapat dibatalkan.
OutputCreated directory '/home/username/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again:
Selanjutnya, Anda akan diminta memasukkan password untuk key tersebut. Ini adalah password opsional yang dapat digunakan untuk mengenkripsi file key pribadi pada disk.
Karena key pribadi tidak pernah diekspos ke jaringan dan dilindungi melalui izin file, file ini tidak boleh dapat diakses oleh siapa pun selain Anda (dan pengguna root).
Password sebagai tambahan opsional. Jika Anda memasukkannya, Anda harus memberikannya setiap kali Anda menggunakan kunci ini (kecuali jika Anda menjalankan perangkat lunak agen SSH yang menyimpan kunci yang didekripsi). Kami merekomendasikan penggunaan password, tetapi jika Anda tidak ingin menyetel password, Anda dapat menekan ENTER untuk melewati permintaan ini.
OutputYour identification has been saved in /home/username/.ssh/id_rsa. Your public key has been saved in /home/username/.ssh/id_rsa.pub. The key fingerprint is: SHA256:CAjsV9M/tt5skazroTc1ZRGCBz+kGtYUIPhRvvZJYBs username@hostname The key's randomart image is: +---[RSA 3072]----+ |o ..oo.++o .. | | o o +o.o.+... | |. . + oE.o.o . | | . . oo.B+ .o | | . .=S.+ + | | . o..* | | .+= o | | .=.+ | | .oo+ | +----[SHA256]-----+
Anda sekarang memiliki key publik dan pribadi yang dapat Anda gunakan untuk mengautentikasi. Langkah selanjutnya adalah menempatkan key publik di server Anda sehingga Anda dapat menggunakan otentikasi kunci SSH untuk masuk.
2. Menyalin Kunci Publik SSH ke Server Anda
Ada beberapa cara untuk mengunggah key publik Anda ke remote server SSH. Metode yang Anda gunakan sangat bergantung pada alat yang Anda miliki dan detail konfigurasi Anda saat ini.
Metode berikut semuanya menghasilkan hasil akhir yang sama. Metode paling sederhana dan paling otomatis dijelaskan terlebih dahulu, dan masing-masing memerlukan langkah manual tambahan. Anda harus mengikuti ini hanya jika Anda tidak dapat menggunakan metode sebelumnya.
Salin Key Publik Anda Menggunakan : ssh-copy-id
Cara termudah untuk menyalin kunci publik Anda ke server yang sudah ada adalah dengan menggunakan utilitas bernama
ssh-copy-id
Karena kesederhanaannya, metode ini direkomendasikan jika tersedia.
ssh-copy-id
tools ini disertakan dalam paket OpenSSH di banyak distribusi, jadi Anda mungkin sudah memilikinya di sistem lokal Anda. Agar metode ini berfungsi, saat ini Anda harus memiliki akses SSH berbasis kata sandi ke server Anda.
Untuk menggunakan utilitas ini, Anda perlu menentukan host remote yang ingin Anda sambungkan, dan akun pengguna yang Anda miliki akses SSH berbasis kata sandi. Ini adalah akun tempat kunci SSH publik Anda akan disalin.
Perintahnya adalah:
ssh-copy-id username@remote_host
Nanti akan muncul 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 komputer lokal Anda tidak mengenali host remote tersebut. Ini akan terjadi saat pertama kali Anda terhubung ke host baru. Ketik YA dan tekan ENTER untuk melanjutkan.
Selanjutnya, utilitas akan memindai akun lokal Anda untuk kunci id_rsa.pub yang kami buat sebelumnya. Ketika menemukan key-nya, itu akan meminta Anda memasukkan password akun pengguna remote tersebut:
utput/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:
Ketik password (pengetikan Anda tidak akan ditampilkan untuk tujuan keamanan) dan tekan ENTER. Utilitas akan terhubung ke akun remote menggunakan password yang Anda berikan. Ini kemudian akan menyalin konten kunci ~/.ssh/id_rsa.pub Anda ke file di direktori home ~/.ssh akun remote yang disebut authorized_keys.
Lalu nanti akan muncuk seperti 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 bagian ini, kunci id_rsa.pub Anda telah diunggah ke akun remote. Anda dapat melanjutkan ke bagian berikutnya.
Menyalin Kunci Publik Anda Menggunakan SSH
Jika Anda tidak memiliki ssh-copy-id, tetapi Anda memiliki akses SSH berbasis password ke akun di server Anda, Anda dapat mengunggah kunci menggunakan metode SSH konvensional.
Kita dapat melakukannya dengan mengeluarkan konten kunci SSH publik kita di komputer lokal kita dan menyalurkannya melalui koneksi SSH ke remote server. Di sisi lain, kita dapat memastikan bahwa direktori ~/.ssh ada di bawah akun yang kita gunakan dan kemudian menampilkan konten yang kita salurkan ke dalam file bernama authorized_keys di dalam direktori ini.
Kami akan menggunakan simbol >> redirect untuk menambahkan konten untuk menimpanya. Ini memungkinkan kami menambahkan kunci tanpa merusak kunci yang ditambahkan sebelumnya.
Perintah lengkapnya akan terlihat seperti ini:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys
Anda mungkin akan melihat pesan 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 komputer lokal Anda tidak mengenali host remote. Ini akan terjadi saat pertama kali Anda terhubung ke host baru. Ketik ya dan tekan ENTER untuk melanjutkan.
Setelah itu, Anda akan dimintai kata sandi akun yang Anda coba sambungkan:
Outputusername@203.0.113.1's password:
Setelah memasukkan kata sandi Anda, konten kunci id_rsa.pub Anda akan disalin ke akhir file otor_keys dari akun pengguna remote. Lanjutkan ke bagian selanjutnya jika ini berhasil.
Menyalin Kunci Publik Anda Secara Manual
Jika Anda tidak memiliki akses SSH berbasis kata sandi ke server Anda, Anda harus melakukan proses di atas secara manual.
Konten file id_rsa.pub Anda harus ditambahkan ke file di ~/.ssh/authorized_keys pada mesin remote Anda.
Untuk menampilkan konten kunci id_rsa.pub Anda, ketik ini ke komputer lokal Anda:
cat ~/.ssh/id_rsa.pub
Anda akan melihat konten kunci, yang mungkin terlihat seperti ini:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== username@hostname
Akses host remote Anda menggunakan metode apa pun yang tersedia. Ini mungkin konsol berbasis web yang disediakan oleh penyedia infrastruktur Anda.
Setelah Anda memiliki akses ke akun Anda di server remote, Anda harus memastikan direktori ~/.ssh telah dibuat. Perintah ini akan membuat direktori jika perlu, atau tidak melakukan apa pun jika sudah ada:
mkdir -p ~/.ssh
Sekarang, Anda dapat membuat atau memodifikasi file authorized_keys di dalam direktori ini. Anda dapat menambahkan konten file id_rsa.pub ke akhir file authorized_keys, membuatnya jika perlu, menggunakan ini:
echo public_key_string >> ~/.ssh/authorized_keys
Pada perintah di atas, gantikan public_key_string dengan keluaran dari perintah cat ~/.ssh/id_rsa.pub yang Anda jalankan di sistem lokal Anda. Itu harus dimulai dengan ssh-rsa AAAA ... atau serupa.
Jika ini berhasil, Anda dapat melanjutkan untuk menguji autentikasi SSH berbasis kunci baru Anda.
3. Mengautentikasi ke Server Anda Menggunakan Kunci SSH
Jika Anda telah berhasil menyelesaikan salah satu prosedur di atas, Anda seharusnya dapat masuk ke host remote tanpa passwordakun remote.
Prosesnya sebagian besar sama:
ssh username@remote_host
Jika ini pertama kalinya Anda terhubung ke host ini (jika Anda menggunakan metode terakhir di atas), akan muncul seperti 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 komputer lokal Anda tidak mengenali host remote. Ketik yes lalu tekan ENTER untuk melanjutkan.
Jika Anda tidak memberikan kata sandi untuk kunci pribadi Anda, Anda akan segera masuk. Jika Anda memberikan password untuk kunci privat saat membuat kunci, Anda akan diminta untuk memasukkannya sekarang. Setelah itu, sesi shell baru akan dibuat untuk Anda dengan akun di sistem remote.
Jika berhasil, lanjutkan untuk mengetahui cara mengunci server.
4. Menonaktifkan Otentikasi Kata Sandi di Server Anda
Jika Anda dapat 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, artinya server Anda masih terkena serangan brute force.
Sebelum menyelesaikan langkah-langkah di bagian ini, pastikan Anda memiliki autentikasi berbasis kunci SSH yang dikonfigurasi untuk akun root di server ini, atau sebaiknya, Anda memiliki autentikasi berbasis kunci SSH yang dikonfigurasi untuk akun di server ini dengan akses sudo. Langkah ini akan mengunci login berbasis kata sandi, jadi penting untuk memastikan bahwa Anda masih bisa mendapatkan akses administratif.
Setelah kondisi di atas benar, masuk ke server jarak jauh Anda dengan kunci SSH, baik sebagai root atau dengan sebuah akun dengan sudo. Buka file konfigurasi daemon SSH:
sudo nano /etc/ssh/sshd_config
Di dalam file, cari arahan yang disebut PasswordAuthentication. Ini dapat dikomentari. Hapus tanda komentar pada baris dengan menghapus # di awal baris, dan atur nilainya menjadi no. Ini akan menonaktifkan kemampuan Anda untuk masuk melalui SSH menggunakan kata sandi akun:
PasswordAuthentication no
Simpan dan tutup file setelah Anda selesai. Untuk benar-benar mengimplementasikan perubahan yang baru saja kita buat, Anda harus memulai ulang layanan.
Pada sebagian besar distribusi Linux, Anda dapat mengeluarkan perintah berikut untuk melakukannya:
sudo systemctl restart ssh
Setelah menyelesaikan langkah ini, Anda telah berhasil mentransisikan daemon SSH Anda untuk hanya merespons kunci SSH.