Login ke Komputer via SSH dengan Public dan Private Key
SSH (Secure Shell) adalah protokol yang digunakan untuk masuk ke dalam remote system dengan aman. Login via SSH bisa dilakukan dengan password maupun authentication key. Tulisan ini akan menyinggung cara yang kedua, yaitu auth key.
Key-based authentication ini menggunakan assymetric cryptography, dimana terdapat sepasang kunci: private key dan public key. Private key bersifat rahasia, sedangkan public key dapat diberikan/dibagikan ke pihak lain sesuai keperluan. Ketika pengguna mencoba login via SSH, remote (misalnya VPS) akan melakukan verifikasi public key yang dimilikinya. Jika user memiliki private key yang valid, maka verifikasi akan berhasil.
Membuat Kunci
Kunci SSH ini idealnya dihasilkan dari komputer lokal (misalnya laptop pribadi) yang digunakan untuk login ke remote system. Pada Debian/Ubuntu, sepasang key ini bisa dibuat dengan perintah:
$ ssh-keygen -t rsa
Ikuti instruksi untuk menentukan lokasi key yang dihasilkan dan tentukan passphrase rahasia.
Ada beberapa parameter yang bisa digunakan:
-t tipe_kunci
dimana tipe kunci umumnya adalahrsa
, bisa jugaecdsa
,dsa
, ataued25519
. Saya lebih banyak menggunakanecdsa
-b ukuran_kunci
dimanaukuran_kunci
ini adalah dalam bit. Untuk RSA, pilih saja 4096, sedangkan ECDSA bisa menggunakan 256, 384, atau 521 (recommended)-f lokasi_file
dimanalokasi_file
adalah nama file (absolute path), misalnya:~/mykey/pras_key_ecdsa
. Jika parameter-f
ini tidak digunakan, maka akan ditanyakan setelah tekan Enter
Jika berhasil maka akan muncul randomart image seperti di bawah.
+---[RSA 2048]----+
| o |
| o + . |
| . o o . |
|oo .. . . |
|*o . + S . . . |
| +o = .. . o |
|. *....o.o.E |
|.=..oo.B=+o |
|+ +.++OB++. |
+----[SHA256]-----+
Untuk perintah sesuai contoh di atas, akan dihasilkan dua buah file: id_rsa.pub
dan id_rsa
. Cek kedua file ini di direktori ~/.ssh
.
Mengirim Kunci Publik ke Sistem Luar
Copy public key ke remote server:
$ ssh-copy-id remote
dimana remote
adalah user dan alamat IP atau host dengan format user@host
. Masukkan password linux user yang disebutkan tadi.
Login ke Sistem Luar via SSH
Di komputer lokal, login via SSH ke remote bisa dilakukan dengan perintah:
$ ssh remote_host -p port
Ganti remote_host
danport
dengan nilai yang benar. Misalnya:
$ ssh user@situsku.dev -p 262
Pada contoh di atas, port SSH sistem tujuan adalah 262, bukan 22 seperti pada umumnya.
Untuk perintah ssh-copy-id
dan ssh
, kita juga bisa memilih kunci privat mana yang akan digunakan, dengan parameter i
. Misalnya ssh-copy-id -i ~/.ssh/adi-key-ecdsa user@host
.
Masukkan passphrase (jika ada) yang tadi dibuat untuk membuka private key dan sistem akan melakukan verifikasi public/private key.