Penggunaan Private dan Public Key dalam SSH

Banyak cara yang dapat dilakukan jika ingin login ke dalam Linux, atau dengan kata lain ingin mengakses shell Linux. Lazimnya terdapat 2 macam cara yaitu telnet dan ssh. Untuk penggunaan telnet tidak disarankan karena alasan keamanan transfer datanya. Untuk ssh inilah yang direkomendasikan untuk digunakan. Pada kesempatan ini, penulis akan bahas mengenai SSH Client. SSH ialah secure shell, dimana dengan program ini user dapat login ke dalam Linux dengan menggunakan username dan password yang sesuai, yang bertujuan untuk mengakses shell. Setiap perintah yang diketikkan di dalam shell akan dienkripsi. Hal ini beda dengan telnet, rsh atau rlogin.
SSH bekerja pada port 22. Program untuk ssh bernama OpenSSH. SSH menggunakan enkripsi dan teknik autentikasi RSA (RSA Autenthication), 3DES, Blowfish, CAST128, hmac-md5, hmac-sha1. Untuk dapat menjalankan fasilitas SSH maka daemon SSH di server tempat kita login harus sudah berjalan. Untuk mengecek, Anda dapat mengetikkan perintah berikut ini.

#netstat -an | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

Jika belum, maka pastikan paket OpenSSH sudah terinstall dan Anda tinggal menjalankan daemon sshd.

Kenapa harus menggunakan public dan private key dalam SSH? Setiap transfer data melalui SSH walau tidak menggunakan public atau private key sekalipun, data yang dikirim pasti sudah dienkripsi. Tetapi terdapat kelebihan tersendiri jika kita menggunakan public dan private key. Untuk masuk ke Linux melalui SSH, Anda hanya mengetikkan username dan password Anda di server. Tetapi jika Anda menggunakan key, maka Anda hanya mengetikkan username dan password untuk membuka public key Anda. Jadi bukan password Anda di server atau di linux. Password untuk public key dan password login Anda di Linux dapat juga berbeda dan dianjurkan untuk tidak menyamakan password key dengan password username yang sudah terdaftar di system.

Berikut ini contoh login ke Linux menggunakan ssh tanpa menggunakan key.

$ssh syafii@192.168.0.4
syafii@192.168.0.4's password: // masukkan password

Secara sederhana dengan cara di atas, Anda dapat login dari system manapun, dari ip address manapun juga bisa.

Public dan private key disimpan dalam file. Isinya dari file tersebut ialah hasil enkripsi dari kunci untuk membuka public key. Public digenerate di server atau di client. Ketika menggenerate public key, secara otomatis akan digenerate pula private key. Dengan menggunakan key, maka Anda hanya dapat login ke dalam Linux dimana Anda harus mempunyai atau menyertakan private key Anda ketika ssh ke dalam system.

Untuk lebih jelasnya, pertama-tama dalam contoh kali ini penulis menggunakan 3 (tiga) komputer, 2 (dua) komputer menggunakan Linux dan 1 (satu) komputer menggunakan Windows. Penulis menggunakan Windows karena untuk melakukan ssh dari Windows harus menggunakan program bantu yaitu PuTTY. Untuk software atau program yang dibutuhkan dalam materi kali ini, di sisi server harus sudah terinstall OpenSSH, di client Windows harus menggunakan PuTTY dan juga WinSCP untuk keperluan mengimport private key.

Komputer pertama merupakan komputer server (menggunakan Linux) dengan IP address 192.168.0.6, komputer kedua menggukan Linux dengan IP address 192.168.0.4 dan komputer ketiga menggunakan Windows dengan IP address 192.168.0.1.

Langkah 1

Sekarang Anda sedang berada di komputer 192.168.0.4. Langkah awal ini Anda harus menggenerate key terlebih dahulu. Username yang penulis gunakan bernama syafii.

$ ssh-keygen -t dsa -b 2048

Generating public/private dsa key pair.
Enter file in which to save the key (/home/syafii/.ssh/id_dsa):
Created directory '/home/syafii/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/syafii/.ssh/id_dsa.
Your public key has been saved in /home/syafii/.ssh/id_dsa.pub.
The key fingerprint is:
22:18:bf:3b:f5:3f:d9:20:5e:df:bc:94:11:1b:a6:72 syafii@

$ cd .ssh/
$ pwd
/home/syafii/.ssh
$ ls
id_dsa id_dsa.pub

Dari output di atas, kunci public dan private disimpan pada direktori ~/.ssh. Nama file untuk kunci public yaitu id_dsa.pub dan id_dsa untuk private key. Setelah terbentuk kunci public dan private, maka untuk kunci public harus dicopy ke server IP 192.168.0.6.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Bagian di atas ialah untuk memasukkan password yang akan digunakan membuka kunci. Nantinya password di atas yang digunakan untuk login bukan password yang tercantum di sistem di /etc/passwd. Sangat dianjurkan untuk membuat password yang berbeda dengan password login di Linux.

Langkah 2

Salin file id_dsa.pub dari IP 192.168.0.4 ke Linux dengan IP 192.168.0.6, dimana di komputer dengan IP 192.168.0.6, Anda mempunyai hak login.

Masih di komputer IP 192.168.0.4, ketikkan

$ scp id_dsa.pub syafii@192.168.0.6:~/
syafii@192.168.0.6's password:
id_dsa.pub 100% |*****************************| 1109 00:00

Langkah 3

Setelah itu login ke komputer IP 192.168.0.6, login dengan user syafii.

$ ssh syafii@192.168.0.6
syafii@192.168.0.6's password:
Last login: Sun Nov 6 12:26:14 2005 from 192.168.0.1

Ketikkan perintah berikut.

[syafii@firewall syafii]$ chmod 700 .ssh
[syafii@firewall syafii]$ cat id_dsa.pub > .ssh/authorize
[syafii@firewall syafii]$ chmod 600 .ssh/authorized_keys2

Sampai di sini, dari sisi client sudah beres. Sekarang di sisi server, untuk mengaktifkan agar ssh server dapat menerima autentikasi menggunakan key maka ssh perlu dikonfigurasi.

Masih di komputer dengan IP 192.168.0.6, login sebagai root.

# vi /etc/ssh/sshd_config

Rubah:
Protocol 1,2
to
Protocol 2

Rubah:
ListenAddress 0.0.0.0
to
ListenAddress 192.168.0.6

Rubah:
RhostsRSAAuthentication yes
to
RhostsRSAAuthentication no

Rubah:
RSAAuthentication yes
to
RSAAuthentication no

Rubah:
PasswordAuthentication yes
to
PasswordAuthentication no

Simpan dan restart openssh.

# /etc/rc.d/init.d/sshd restart
Shutting down sshd: [ OK ]
Starting sshd: [ OK ]

Untuk mengecek konfigurasi, login ke komputer IP 192.168.0.4, kemudian ssh ke IP 192.168.0.6.

$ ssh syafii@192.168.0.6
Enter passphrase for key '/home/syafii/.ssh/id_dsa':
Last login: Sun Nov 6 13:11:34 2005 from 192.168.0.4
[syafii@firewall syafii]$

Untuk dapat login ke dalam Linux yang menggunakan key, maka di komputer kita harus ada private key. Dalam hal ini private key terdapat di direktori /home/syafii pada komputer dengan IP 192.168.0.4, maka dari itu jika ingin ssh private key ( id_dsa) harus selalu disertakan. Seumpama Anda dari komputer IP 192.168.0.2 ingin ssh ke 192.168.0.6, maka di home dir Anda harus Anda salin file id_dsa dari komputer IP 192.168.0.4. Memang sedikit rumit, tetapi demi kehati-hatian, hal ini sangat diperlukan. Artinya jika tidak mempunyai private key, maka Anda tidak dapat login ke Linux walaupun Anda mengetahui passwordnya sekalipun. Karena ketika kita mengetikkan perintah ‘ssh’, secara otomatis akan memanggil file id_dsa.

Sampai saat ini konfigurasi berjalan dengan benar. Bagaimana jika Anda melakukan ssh dari komputer yang menggunakan sistem operasi Windows? Kali ini 2 (dua) program yang Anda butuhkan, yaitu PuTTY dan PuTTYgen (http://www.chiark.greenend.org.uk/~sgtatham/putty/). Secara teknis hampir sama, ketika Anda menggunakan PuTTY, private key harus Anda sertakan juga.

Langkah 4

Import file id_dsa agar dapat dieksekusi oleh PuTTY. Download file id_dsa dari IP 192.168.0.4.

J:\>ftp 192.168.0.4
Connected to 192.168.0.4.
220 FTP server (Version 6.00LS) ready.
User (192.168.0.4:(none)): syafii
331 Password required for syafii.
Password:
230 User syafii logged in.
ftp> cd .ssh
250 CWD command successful.
ftp> get id_dsa
200 PORT command successful.
150 Opening ASCII mode data connection for 'id_dsa' (1264 bytes).
226 Transfer complete.
ftp: 1287 bytes received in 0,00Seconds 1287000,00Kbytes/sec.
ftp> close
221 Goodbye.
ftp> by

J:\>dir id_dsa
Volume in drive J is PII
Volume Serial Number is 5891-F844

Directory of J:\

06/11/2005 18:25 1.287 id_dsa
1 File(s) 1.287 bytes
0 Dir(s) 3.296.157.696 bytes free

Buka PuTTYgen > Load, masukkan file id_dsa.


Masukkan password untuk private key.

Karena kita mengimport private key maka klik Save private key.

Kemudian buka PuTTY.

Masukkan private key yang sudah disimpan tadi. Kemudian login ke ip 192.168.0.6.





Memang sedikit rumit jika menggunakan sistem operasi Windows, tetapi karena umumnya login menggunakan PuTTY, maka agar adil perlu dibahas pula teknik login dengan PuTTY.

Author: Muhammad Syafii
Published: November 20, 2005 ****