Akses ke linux server dengan password satu cara yang cukup membosankan, apalagi saat hal itu kita lakukan berkali-kali dalam waktu yang tidak terlalu lama. Cara yang lebih efisien dan tidak susah untuk diimplementasik adalah menggunakan kunci ssh. Seperti dalam kasus SSL/TLS yang dijelaskan di artikel ini, kunci ssh juga mempunyai 2 jenis: kunci ssh privat dan kunci ssh publik.
Berikut akan dijelaskan bagaimana hal ini bisa diakukan:
- Membuat kunci ssh di terminal klien tempat yang mengakses server linux yang lain
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa):
Created directory '~/.ssh/id_rsa'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_rsa
Your public key has been saved in ~/.ssh/id_rsa/id_rsa.pub
The key fingerprint is:
SHA256:FC3XjTxkPq8cxX96h02X0UDJ+JeZ6FsCPFoXfYa41lc mac@MBPsomtllhorMac
The key's randomart image is:
+---[RSA 4096]----+
| .. +oB+o |
| ..ooBo=oE|
| .o. o==oB|
| . =o*o==|
| S o.* .+=|
| . . = *o|
| o * +|
| . ..|
| |
+----[SHA256]-----+
paraphrase adalah password yang mungkin dibutuhkan, jika tidak dibutuhkan langsung tekan enter.
Hasil perintah di atas berada di direktori ~/.ssh/id_rsa yang terdiri atas 2 file: id_rsa dan id_rsa.pub. Rights dari file secara default adalah 600 untuk id_rsa dan 644 untuk id_rsa.pub.
Langkah selanjutnya adalah merubah rights dari direktori dan file yang baru saja dihasilkan oleh perintah di atas.
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa.pub
$ chmod 600 ~/.ssh/id_rsa
perintah chmod 700 meberikan owner dari direktori ~/.ssh pemiliki mempunyai kemampuan rwx = baca (r), tulis (w) dan eksekusi(x)
perintah chmod 700 meberikan owner dari file ~/.ssh/id_rsa.pub dan ~/.ssh/id_rsa kemampuan rw = baca(r), tulis(w). Ulasan mengenai right dari ownership sebuah file di linux akan dituliskan di artikel lainnya.
Dengan proses di atas, langkah berikutnya adalah untuk menyalin (meng-copy) file ~/.ssh/id_rsa.pub ke server tujuan. Hal itu bisa dilakukan dengan perangkat ssh-copy. Berikut adalah perintahnya:
$ ssh-copy-id user@remote_host
user adalah akun user yang digunakan untuk perintah ssh-keygen sebelumnya. Sebagai contoh bisa diambil contoh akun itu adalah friedal dan server yang akan di-login adalah 192.168.10.2 maka perintah di atas menjadi seperti di bawah ini.
$ ssh-copy-id friedal@192.168.12.1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/yourusername/.ssh/id_rsa.pub"
The authenticity of host '192.168.12.1 (192.168.12.1)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no)? yes
/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
friedal@192.168.12.1's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'friedal@192.168.12.1'"
and check to make sure that only the key(s) you wanted were added.
Di sini dibutuhkan password dari akun yang kita punya untuk dapat mengeksekusi perintah ssh-copy-id. Setelah hal ini selesai dilakukan langkah selanjutnya adalah mencoba melakukan perintah ssh ke 192.168.12.1 menggunakan kunci pribadi yang ada ~/.ssh/id_rsa yang dapat dilakukan dengan cara seperti di bawah ini:
ssh -i ~/.ssh/id_rsa friedal@192.168.12.1
Server 192.168.12.1 tidak akan bertanya password dari user friedal, tapi akan menverifikasi akun berdasarkan ~/.ssh/id_rsa.pub yang baru saja disalin di perintah sebelumnya.