Pengertian SSH
Secure Shell atau dikenal sebagai SSH merupakan protokol untuk mengakses (login) sistem komputer remote secara aman. Umumnya protokol ini digunakan untuk login ke sistem server. Berbeda dengan protokol remote login lainnya seperti telnet dan rsh, SSH menggunakan enkripsi pada traffic data-nya sehingga meminimalisir resiko sniffing dan Man-In-The-Middle (MITM) Attack. Secara default, SSH berjalan pada port 22 TCP, namun untuk menghindari adanya serangan Denial-Of-Service (DOS) dan Brute-Force, port SSH biasanya dipindahkan ke port lain.
Klien SSH
SSH hanya sebatas protokol, untuk menggunakannya dibutuhkan aplikasi klien. Ada dua aplikasi klien yang populer digunakan yaitu: puTTY dan OpenSSH. PuTTY merupakan klien SSH yang popuer digunakan pada sistem operasi Windows ( walaupun tersedia juga versi untuk Linux dan MacOS ). Kelebihan utama puTTY adalah mempunyai antarmuka berbasis grafis (GUI), sehingga membuatnya mudah digunakan oleh pemula dan pengguna yang tak terbiasa dengan terminal atau Command Line. Selain SSH, puTTY juga dapat digunakan untuk transfer file dengan protokol SCP dan SFTP.
OpenSSH merupakan klien (dan server) SSH yang berasal dari proyek OpenBSD. OpenSSH hanya mempunya antarmuka Command Line sehingga anda perlu membiasakan bekerja di terminal bila akan menggunakanya. Meskipun demikian, ketiadaan GUI inilah yang menyebabkan OpenSSH ditemui hampir di semua jenis server karena umumnya server dijalankan tanpa antarmuka grafis untuk alasan performa dan keamanan. Sama sperti puTTY, OpenSSH juga mendukung protokol SCP dan SFTP.
Otentikasi Login
Aplikasi server SSH umumnya mendukung dua jenis otentikasi, yaitu menggunakan kata sandi (password) atau public-private key pair atau sering disebut SSH keys. Otentikasi login dengan menggunakan password merupakan hal yang umum dilakukan karena terenkripsi secara default (dibandingkan dengan rsh) dan mudah dipahami oleh pengguna.
Namun, password server SSH yang aman sekalipun akan menjadi sasaran bagi bot atau hacker yang akan berulang kali mencoba login (brute-force) yang berkemungkinan menyebabkan DOS pada server tersebut. Karena itu, direkomndasikan untuk menggunakan otentikasi berbasis public key pada server yang berhadapan langsung dengan internet.
Public-Private key pair atau disebut juga SSH key adalah sepasang kunci kriptografi digunakan untuk otentikasi SSH. Kunci ini terdiri dari dua file yang berisi public key dan private key. Hubungan antara dua key ini dapat diibaratkan dengan kunci fisik dan gembok. Dimana Public key merupakan gembok yang dapat diekspos ke luar (publik) sedangkan Private key merupakan kunci yang harus dijaga agar jangan sampai hilang atau tercuri.
Diluar dua jenis otentikasi tersebut, OpenSSH juga mendukung otentikasi melalui modul PAM Linux seperti melalui aplikasi 2FA Google Authenticator.
SSH Tunneling, Jump Host, dan X11 Forwarding
Tunneling merupakan cara untuk menggirim data melintasi jaringan dengan menggunakan protokol yang berbeda, misalnya akses web melalui VPN. SSH memungkinkan komputer klien untuk mengakses layanan pada server tujuan melalui koneksi SSH. SSH Tunneling bermanfaat untuk transfer data rahasia melalui jaringan yang tak aman (misalnya wifi publik) atau memngakses layanan yang berada di belakang firewall/NAT seperti layanan internal dalam jaringan LAN.
Salah satu fitur yang menarik dari SSH adalah X11 Forwarding. Fitur ini memungkinkan pengguna untuk menampilkan GUI X server di desktop klien, dengan kata lain anda dapat menjalankan aplikasi GUI di server dan menapilkanya di layar desktop klien!
Selain untuk mengakses server, SSH juga dapat difungsikan sebagai Jump Host. Jump Host merupakan server SSH yang berfungsi sebagai *relay* atau jembatan yang menghubungkan antara klien dengan server SSH lainnya. Jump host umumnya digunakan untuk menlakukan remote jaringan internal dari luar/internet.
Referensi
Secure Shell - Wikipedia
SSH Essentials: Working with SSH Servers, Clients, and Keys