SSH (Secure Shell) adalah protokol yang digunakan untuk masuk ke dalam remote system dengan aman. Login bisa dilakukan dengan password maupun authentication key. Tulisan ini akan menyinggung cara yang kedua. Salah satu contoh remote system yang umum adalah hosting server.

Key-based authentication menggunakan assymetric key, yaitu terdapat sepasang kunci: private key dan public key. Private key bersifat rahasia, sedangkan public key dapat diberikan ke pihak lain sesuai keperluan, misalnya komputer server. Ketika user mencoba login via SSH, remote (dalam contoh ini adalah server) akan melakukan verifikasi public key yang dimilikinya. Hal ini akan berhasil jika user memiliki private key yang valid.

Kunci SSH ini idealnya dihasilkan dari komputer lokal (misalnya laptop pribadi) yang digunakan untuk login ke remote. 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. 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]-----+

Akan dihasilkan dua buah file: id_rsa.pub dan id_rsa. Cek kedua file ini di direktori ~/.ssh. Copy public key ke remote server:

$ ssh-copy-id remote

dimana remote adalah alamat IP atau host yang dimaksud. Metode copy public key bisa juga menggunakan GUI. Misalnya, di web hosting yang saya gunakan, saya tinggal memasukkan public key (yang saya buat di PC saya) melalui form pada cpanel.

Di komputer lokal, login via SSH ke remote bisa dilakukan dengan perintah:

$ ssh remote_host -p port

Contohnya:

$ ssh user@situs.com -p 231

Masukkan passphrase yang tadi dibuat untuk membuka private key dan sistem akan melakukan verifikasi public/private key. Kita juga bisa memilih untuk tidak perlu memasukkan passphrase untuk login berikutnya.