SSH (Secure Shell) adalah protokol jaringan kriptografi yang digunakan untuk membuat koneksi aman antara klien jarak jauh dan server, menggunakan TCP protokol untuk keamanan dan keandalan.
Koneksi berbasis SSH mendukung berbagai metode otentikasi, beberapa di antaranya adalah :
- Otentikasi berbasis sandi
- Otentikasi berbasis kunci
Secara default, membuat koneksi SSH baru antara dua mesin akan menggunakan otentikasi berbasis kata sandi. Tetapi jika Anda sering masuk ke server dari klien yang sama, mungkin akan merepotkan dan menjengkelkan untuk mengetik kata sandi setiap kali Anda masuk ke server.
Tutorial ini menyajikan otentikasi alternatif lain untuk masuk ke server jauh, menggunakan kunci publik .
Mari kita lihat bagaimana kita dapat mengatur ini pada mesin klien dan server tertentu yang sering kita gunakan, sehingga kita dapat login secara otomatis dari mesin ini dengan aman!
Periksa Kunci SSH yang ada di Mesin Klien
Bagian pertama berhubungan dengan menghasilkan pasangan kunci privat-publik di klien mesin. Kunci publik kemudian disalin ke server dan digunakan untuk otentikasi.
Sebelum menyetel Kunci SSH apa pun, pastikan tidak ada kunci yang sudah ada untuk kombinasi server-klien ini.
Mari jalankan skrip bash ini untuk memeriksa apakah file tersebut ada (Anda dapat mengetik ini langsung di terminal)
if test -f ~/.ssh/id_*.pub; then echo "Found" else echo "Not Found" fi
Jika Anda mendapatkan “Not Found”, ini berarti tidak ada file seperti itu, dan kami siap membuat kunci baru untuk koneksi ini.
Jika tidak, Anda dapat langsung menggunakan kunci yang ada dan melewati langkah berikutnya. Namun jika Anda tidak ingin menggunakan kunci lama, Anda dapat menghapus kunci lama dan membuat yang baru dengan mengikuti langkah berikutnya.
Buat pasangan kunci SSH baru untuk mesin client-server
Perintah di bawah ini akan menghasilkan 4096 . baru bit kunci SSH berpasangan dengan id Anda (dapat berupa apa saja yang dapat diidentifikasi!) sebagai komentar:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Setelah mengonfigurasi lokasi kunci dan frasa sandi dengan menjalankan perintah ini, sekarang kita akan memiliki kunci baru yang dibuat untuk kita, bersama dengan sidik jari kunci.
Sekarang, mari kita periksa apakah kunci privat-publik benar-benar ada, menggunakan ls
.
ls ~/.ssh/id_*
Anda harus mendapatkan output di bawah ini :
/root/.ssh/id_rsa /root/.ssh/id_rsa.pub
Artinya id_rsa
adalah kunci pribadi Anda, dan id_rsa.pub
adalah kunci publik Anda.
CATATAN :Tidak pernah bagikan kunci pribadi Anda di seluruh mesin. Inilah sebabnya mengapa Anda memiliki kunci publik. Jadi kita dapat menyalin kunci publik yang sama ke beberapa server ke ssh
untuk, sambil mempertahankan keamanan tambahan menggunakan kunci pribadi di mesin lokal Anda.
Salin kunci publik ke Server
Karena kami memiliki pasangan kunci SSH di klien kami, untuk dapat masuk ke server jarak jauh, kami perlu menyalin kunci publik di sana.
Kita bisa menggunakan scp
untuk menyalin file ke server kami, tetapi ada alternatif yang lebih baik untuk ssh
kunci, menggunakan ssh-copy-id
.
Anda dapat menginstal ssh-copy-id
menggunakan manajer paket Anda jika tidak tersedia.
ssh-copy-id server_username@server_ip
Setelah memasukkan kata sandi nama pengguna server, sekarang kita akan diautentikasi untuk masuk ke server menggunakan kunci publik.
Outputnya akan seperti ini:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/client_user/.ssh/id_rsa.pub" /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 SERVER_USER@SERVER_IP's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'SERVER_USER@SERVER_IP'" and check to make sure that only the key(s) you wanted were added.
Artinya kita bisa menggunakan ssh
ke mesin khusus ini dari klien kami dengan autentikasi berbasis kunci ekstra!
Untuk mengujinya, coba ssh
ing ke server sekarang!
ssh server_user@server_ip
Men-debug Potensi Masalah
Tetapi beberapa dari Anda mungkin masih mendapatkan prompt kata sandi untuk muncul, bersama dengan frasa sandi berbasis kunci! Apa yang terjadi?
Alasan potensial dirinci di sini. Sepertinya kami mungkin tidak memiliki izin yang tepat pada ~/.ssh
kami direktori di server jarak jauh . Isi HOME direktori ~
, ~/.ssh
direktori, dan ~/.ssh/authorized_keys
file harus dapat ditulis hanya oleh kami. Jika tidak, ia merasakan bahwa pengguna lain dapat memperoleh akses, dan itulah sebabnya kata sandi juga diminta.
Mari kita periksa izin direktori home kita terlebih dahulu.
Karena kami hanya dapat menulis, kami tidak perlu mengubah izin untuk direktori ini. Demikian pula, lihat mode dan ubah mode menggunakan chmod
.
Mari kita ubah hak akses ke file dan direktori ini menggunakan chmod -R ~/.ssh 700
secara rekursif.
Sekarang, uji untuk melihat apakah ini berhasil.
Potensi Masalah Debug – Bagian 2
Jika Anda masih tidak dapat menjalankannya, utas ini menyebutkan bahwa beberapa opsi dalam file konfigurasi ssh mungkin dinonaktifkan.
Periksa /etc/ssh/sshd_config
di server untuk memastikan bahwa RSAAuthentication
, PubkeyAuthentication
dan UsePAM
opsi tidak dinonaktifkan.
Juga, pastikan Anda secara eksplisit menetapkan PasswordAuthentication no
di konfigurasi, untuk menonaktifkan Otentikasi Berbasis Kata Sandi untuk pengguna kami.
Seperti yang Anda lihat, ini memang terjadi pada saya! PubKeyAuthentication
juga dinonaktifkan, dan karenanya meminta saya untuk memasukkan kata sandi, karena sesi tidak menggunakan ini sebagai mode otentikasi utama!
Saya membatalkan komentar pada baris ini, dan memulai kembali ssh
untuk menerapkan perubahan.
sudo systemctl restart ssh
Sekarang, ini membuat otentikasi tanpa kata sandi akhirnya berfungsi untuk saya! Semoga, Anda juga telah menemukan solusi saat ini.
Kami akhirnya mengonfigurasi ssh untuk bekerja tanpa kata sandi!
Kesimpulan
Dalam tutorial ini, kami menunjukkan kepada Anda bagaimana Anda dapat mengatur ssh
metode otentikasi berbasis kunci publik, dan login ke server tanpa kata sandi!