Wednesday, November 15, 2006

Akses CVS dengan SSH tunneling

Dalam tulisan ini saya akan menjelaskan bagaimana menggunakan koneksi SSH untuk mengakses repository CVS dengan menggunakan CVS client. Tulisan ini berdasarkan pengalaman yang telah saya lakukan. Mesin untuk CVS server yang saya gunakan adalah Linux dan mesin yang saya gunakan sebagai client adalah Windows.

Pertama saya install CVS server di mesin Linux kemudian membuat repository. Kemudian setup cvs pserver yaitu membuat configurasi xinetd untuk membuka service untuk cvspserver.

Dengan menggunakan PuTTYgen saya membuat public key dan private key. Dari program tersebut saya dapatkan text untuk dimasukan ke file authorized_key di server, seperti ini:


ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBMFXliQrC16kZwFH1YOl/n3leI5aK13gFYiPFKFSBCFikNzJL5Su9PrJB0fJ7ZgSHKc/2
s+tWaXvfS6yWsGTQ81T49YidfQu/M14QgHTvpe23h8NaBRr+HuxDil0euUnolOcFchXraS5APe+yrqNIKSotGAxpfyPDpXTAZsAgdhQ==
rsa-key-20061115


dan sebuah file yang disave bernama cvsadmin_private_key.ppk

Di server Linux saya dimana CVS diinstall, saya buat user cvsadmin kemudian pada home direktori user cvsadmin saya buat direktori .ssh/ kemdian di direktory tersebut saya but file authorized_key dengan isi seperti contoh diatas.

Kemudian saya buat kofigurasi untuk SSH daemon (sshd) di /etc/ssh dengan cara mengkopi konfigurasi yang sudah ada kemudian memodifikasinya. File konfigurasi yang baru ini saya beri nama sshd_config_ext.

Bagian penting dari isi file configurasi tersebut (tidak semua dicantumkan disini) adalah:


Port 4321
Protocol 2
PasswordAuthentication no
AllowTcpForwarding yes
AllowUsers cvsadmin


Saya menggunakan port 4321 yang tidak biasa dipakai untuk service ssh. Authentication menggunakan password saya set 'no' untuk meningkatkan keamanan karena authentication yang saya buat akan menggunakan key pair yang telah dibuat menggunakan PuTTYgen.

Setelah itu saya jalankan sshd dengan menggunakan file configurasi tesebut:


/usr/sbin/sshd -f /etc/ssh/sshd_config_ext


Di sisi client untuk koneksi ke server CVS menggunakan tunneling, saya menggunakan program PuTTY. Saya buat session baru untuk koneksi ke server CVS. Saya lakukan setting SSH connection pada bagian 'Auth' dengan menspesifikasikan file private key yaitu file cvsadmin_private_key.ppk yang telah saya buat sebelumnya.

Saya juga set SSH connection pada bagian 'Tunnels' dengan menambahkan port forwarding rule. Saya isi source port dengan 2401 yaitu port yang digunakan untuk CVS pserver di server Linux dan saya isi destination dengan '127.0.0.1:2401' yaitu mesin destop saya yang akan saya gunakan untuk development. 2401 adalah standar port untuk CVS pserver.

Hasil yang saya dapatkan setelah menambahkan seting port forwarding tersebut adalah:

L2401 127.0.0.1:2401

Dengan membuat session tersebut di PuTTY, setiap saya melakukan koneksi menggunakan session tersebut maka di lokal mesin saya akan dibukan port 2401. Port tersebut seolah-olah adalah port 2401 di mesin CVS. Koneksi ke mesin CVS sebenarnya tidak menggunakan port 2401 tetapi port 5000 dengan protokol SSH. Inilah tunneling.

Akhirnya setelah saya berhasil melakukan login (koneksi) menggunakan session pada PuTTY, saya dapat menggunakan CVS saya. Yang saya lakukan pada CVS client, dalam hal ini saya menggunakan Eclipse development tool, saya buat koneksi CVS pserver ke localhost port 2401.

Dengan cara seperti ini transaksi dengan CVS server menjadi aman. Server CVS juga dapat dipindah-pindah tanpa perubahan apapun di CVS client.

No comments:

Followers