SSH adalah adalah salah satu protokol keamanan yang memungkinkan pengguna mengakses dan mengelola perangkat secara remote dengan aman. Bagaimana cara kerjanya? Sederhananya, SSH menggunakan metode autentikasi untuk memastikan hanya pengguna yang berhak yang dapat masuk ke sistem.
Selain itu, protokol ini sering digunakan oleh administrator jaringan untuk konfigurasi server, transfer file, atau menjalankan perintah dari jarak jauh. Tanpa SSH, akses jarak jauh bisa menjadi celah keamanan yang berbahaya. Ingin tahu lebih lanjut tentang fungsinya dan bagaimana cara menggunakannya? Simak penjelasannya di bawah ini!
Apa itu Secure Shell (SSH)?
Secure Shell (SSH) adalah protokol yang dirancang untuk memungkinkan pengguna mengakses, mengontrol, dan mengelola server secara remote dengan aman melalui koneksi internet. SSH memastikan komunikasi antara dua mesin dalam jaringan tetap terlindungi dari ancaman seperti penyadapan atau serangan siber menggunakan metode enkripsi.
Sebagai protokol berbasis client-server, SSH memungkinkan pengguna untuk mengautentikasi identitas sebelum mengakses sistem, mengirim perintah dari jarak jauh, dan menerima respons dari server. Administrator sistem sering memanfaatkan SSH untuk mengelola server, mengubah konfigurasi, dan mengakses file tanpa perlu hadir secara fisik.
Selain itu, SSH juga mendukung transfer data yang aman serta pembuatan secure tunnels untuk aplikasi lain, seperti email atau perambanan web. Dengan fitur enkripsi yang kuat, SSH menjadi solusi utama dalam menjaga keamanan komunikasi antara perangkat dalam jaringan.
Cara Kerja SSH
Prosesnya dimulai ketika SSH client (komputer yang digunakan oleh pengguna) mencoba terhubung ke SSH server, yaitu server jarak jauh yang akan diakses. Secara default, SSH berjalan pada port TCP 22, meskipun administrator dapat mengubahnya sesuai kebutuhan. Server terus memantau port ini untuk menerima permintaan koneksi yang masuk.
1. Inisiasi Koneksi
Saat pengguna ingin mengakses server, SSH client mengirimkan permintaan koneksi ke SSH server. Server kemudian merespons dengan memulai proses TCP handshake, yang bertujuan untuk membangun jalur komunikasi antara kedua perangkat.
2. Negosiasi Standar Enkripsi
Setelah koneksi TCP terbentuk, server mengirimkan daftar protokol enkripsi yang didukung beserta versinya. SSH client memeriksa daftar ini dan memilih protokol yang kompatibel dengan server.
Jika keduanya sepakat pada satu protokol, koneksi aman akan dibuat menggunakan enkripsi yang telah disetujui. Dalam tahap ini, server juga mengirimkan public key asimetrisnya, yang akan digunakan klien untuk memverifikasi identitas server.
3. Proses Key Exchange
Setelah protokol enkripsi disepakati, baik client maupun server menggunakan algoritma pertukaran kunci, seperti Diffie-Hellman Key Exchange Algorithm, untuk menghasilkan kunci rahasia bersama.
Uniknya, kunci rahasia ini tidak pernah dikirim secara langsung. Sebaliknya, kedua perangkat bertukar data publik, lalu memprosesnya secara independen untuk menghasilkan kunci rahasia yang sama. Kunci ini bersifat simetris dan digunakan untuk mengenkripsi seluruh sesi komunikasi.
4. Verifikasi Identitas Server (Host Key Verification)
Sebelum komunikasi berlanjut, SSH client memverifikasi identitas server untuk mencegah serangan man-in-the-middle. Klien membandingkan public key server dengan kunci yang sebelumnya tersimpan dalam sistem.
Jika kunci cocok, koneksi dapat dilanjutkan. Jika berbeda, klien akan memberikan peringatan kepada pengguna bahwa identitas server mungkin telah berubah.
5. Autentikasi Pengguna
Setelah koneksi terenkripsi terbentuk, pengguna harus mengautentikasi diri agar dapat mengakses server. Terdapat dua metode utama untuk autentikasi:
- Autentikasi dengan kata sandi: Pengguna memasukkan nama pengguna dan kata sandi, yang kemudian dikirim melalui saluran terenkripsi. Meskipun aman dari penyadapan, metode ini kurang direkomendasikan karena lebih rentan terhadap serangan brute force.
- Autentikasi dengan pasangan kunci SSH: Metode ini menggunakan dua kunci (public key dan private key). Public key disimpan di server dan dikaitkan dengan akun pengguna, sementara private key tetap tersimpan aman di klien. Saat klien mencoba masuk, server mengirimkan tantangan yang hanya bisa dijawab oleh klien yang memiliki private key yang benar.
6. Membangun Secure Shell
Setelah pengguna berhasil diautentikasi, SSH membuat antarmuka baris perintah (command-line interface) yang terenkripsi. Dari sini, pengguna dapat menjalankan perintah di server seolah-olah mereka sedang mengoperasikan langsung dari komputer tersebut.
Setiap perintah yang diketik akan dikirim ke server dengan aman, dan hasilnya akan dikembalikan ke klien dalam bentuk terenkripsi, memastikan komunikasi tetap terlindungi dari ancaman eksternal.
Fungsi SSH
SSH memiliki berbagai fungsi utama dalam keamanan dan manajemen jaringan. Protokol ini tidak hanya mengamankan komunikasi jarak jauh, tetapi juga membantu melindungi sistem dari ancaman siber. Berikut adalah beberapa fungsi pentingnya:
- SSH memungkinkan transfer file yang terenkripsi antar komputer.
- Pengguna dapat menjalankan perintah di perangkat atau server jarak jauh melalui koneksi SSH.
- SSH digunakan untuk mengelola infrastruktur jaringan secara aman. Administrator dapat mengakses dan mengontrol perangkat tanpa risiko penyadapan data oleh pihak yang tidak berwenang.
- Protokol ini memungkinkan pembuatan jalur komunikasi terenkripsi untuk aplikasi lain, seperti email atau peramban web.
- SSH membantu mencegah serangan seperti IP spoofing, DNS spoofing, manipulasi data, dan pelacakan ilegal.
Teknik Enkripsi yang Digunakan SSH
Keamanan SSH bergantung pada teknologi enkripsi yang melindungi data dari akses tidak sah. Lalu, bagaimana sebenarnya SSH mengenkripsi data? Berikut penjelasannya.

1. Enkripsi simetris (Symmetric Encryption)
Enkripsi ini sering disebut sebagai shared key encryption atau shared secret encryption karena klien dan server berbagi kunci yang sama. Dalam beberapa kasus, pasangan kunci dapat digunakan, di mana satu kunci dapat dihitung dari yang lain.
Setelah sesi SSH dimulai, semua komunikasi akan terenkripsi dengan kunci simetris, menjaga keamanan data dari akses tidak sah. Kunci rahasia ini dihasilkan melalui algoritma pertukaran kunci (key exchange algorithm), yang memastikan kunci tidak pernah dikirim langsung antara klien dan server.
Sebagai gantinya, kedua sistem bertukar data publik dan menggunakan algoritma yang telah disepakati untuk secara mandiri menghasilkan kunci yang sama, mencegah pencurian kunci oleh pihak ketiga. Kunci simetris yang dihasilkan bersifat unik untuk setiap sesi SSH dan dibuat sebelum proses autentikasi pengguna dimulai.
Setelah kunci ditetapkan, semua paket data yang dikirim antara klien dan server dienkripsi menggunakan kunci tersebut, termasuk informasi sensitif seperti kata sandi, sehingga aman dari penyadapan paket jaringan. SSH juga mendukung berbagai algoritma enkripsi simetris, seperti AES (Advanced Encryption Standard), CAST128, dan Blowfish.
Sebelum koneksi aman terbentuk, klien dan server akan melakukan negosiasi untuk menentukan algoritma yang akan digunakan, dengan memilih algoritma paling kompatibel di antara keduanya. Misalnya, pada sistem Ubuntu 14.04 LTS yang menggunakan SSH, algoritma aes128-ctr dapat menjadi pilihan default untuk enkripsi komunikasi dua arah.
2. Enkripsi asimetris (Asymmetric Encryption)
SSH menggunakan asymmetric encryption untuk mengamankan koneksi dengan dua kunci berbeda, yaitu kunci publik dan kunci privat, yang membentuk pasangan kunci publik-privat. Kunci publik dapat dibagikan secara bebas dan digunakan untuk mengenkripsi pesan, tetapi hanya kunci privat yang sesuai yang dapat mendekripsinya.
Sebaliknya, pesan yang dienkripsi dengan kunci privat hanya bisa didekripsi oleh kunci publiknya, yang sering digunakan dalam proses autentikasi. Dalam SSH, enkripsi asimetris berperan penting dalam pertukaran kunci untuk menghasilkan kunci rahasia bersama melalui algoritma seperti Diffie-Hellman Key Exchange.
Setelah koneksi aman terbentuk, server dapat menggunakan kunci publik klien untuk verifikasi identitas, memastikan hanya pengguna dengan kunci privat yang sah yang dapat mengakses sistem. Enkripsi asimetris tidak mengenkripsi seluruh sesi SSH, tetapi berfungsi sebagai langkah awal untuk memastikan koneksi tetap aman.
3. Hashing
Hashing berperan sebagai salah satu bentuk kriptografi yang berfungsi untuk menjaga integritas data. Berbeda dengan enkripsi symmetric dan asymmetric, hashing bersifat one-way, sehingga hasilnya tidak dapat dikembalikan ke bentuk aslinya. Proses hashing menghasilkan nilai unik dengan panjang tetap untuk setiap input yang diberikan.
Nilai ini tidak memiliki pola yang bisa dieksploitasi, sehingga hampir mustahil untuk merekonstruksi data asli dari hash-nya. Hal ini membuatnya sangat efektif dalam menjaga keaslian pesan.
Dalam SSH, hashing digunakan untuk memverifikasi keabsahan pesan melalui HMAC (Hash-based Message Authentication Codes), yang memastikan bahwa data atau perintah yang diterima tidak mengalami perubahan selama proses transmisi.
Selain itu, hashing terintegrasi dengan pemilihan algoritma sandi dalam sesi SSH. Ketika algoritma enkripsi symmetric dipilih, SSH juga menentukan algoritma message authentication yang menggunakan hashing.
Setiap pesan yang dikirim dalam sesi SSH dilengkapi dengan Message Authentication Code (MAC), yang dihitung menggunakan symmetric key, nomor urut paket, dan isi pesan. MAC ini dikirim bersama dengan data yang telah dienkripsi secara symmetric sebagai bagian akhir dari paket komunikasi.
Pihak penerima dapat memverifikasi keutuhan pesan dengan menghitung ulang MAC dan membandingkannya dengan yang diterima. Penting untuk dicatat bahwa tujuan utama hashing dalam SSH bukan untuk menjaga kerahasiaan seperti enkripsi, melainkan untuk memastikan integritas data.
Nilai hash yang dihasilkan tidak dapat didekripsi kembali, tetapi dapat dibandingkan dengan hash yang sudah diketahui untuk memastikan bahwa data tidak berubah. Dengan kata lain, hashing dalam SSH berfungsi sebagai sidik jari digital yang menjamin data tetap utuh selama proses komunikasi.
Perbedaan SSH dan Telnet
SSH dan Telnet adalah protokol yang memungkinkan pengguna mengakses dan mengontrol komputer dari jarak jauh melalui jaringan. Namun, perbedaan utama keduanya terletak pada aspek keamanan. SSH dirancang dengan sistem enkripsi untuk melindungi data, sementara Telnet tidak memiliki mekanisme keamanan, sehingga rentan terhadap penyadapan.
1. Enkripsi
SSH menggunakan teknologi kriptografi untuk mengenkripsi seluruh komunikasi antara klien dan server. Proses ini mencakup autentikasi pengguna serta transfer data. Metode yang digunakan meliputi enkripsi simetris, enkripsi asimetris, dan hashing guna menjaga kerahasiaan serta integritas data.
Sebaliknya, Telnet tidak menerapkan enkripsi, sehingga semua data, termasuk kredensial login, dikirim dalam bentuk teks biasa. Tanpa perlindungan ini, informasi yang dikirim melalui Telnet mudah disadap oleh peretas menggunakan alat pemantau jaringan.
2. Keamanan
Karena memiliki sistem enkripsi, SSH dianggap sebagai protokol yang aman untuk administrasi jarak jauh. SSH melindungi data dari berbagai ancaman siber, seperti IP spoofing, DNS spoofing, manipulasi data, dan pemantauan ilegal. Selain itu, protokol ini menyediakan mekanisme autentikasi yang lebih aman bagi pengguna.
Sebaliknya, Telnet memiliki kelemahan besar dalam hal keamanan karena tidak mendukung enkripsi. Kekurangan ini membuatnya sangat rentan terhadap pencurian data. Oleh karena itu, SSH dikembangkan sebagai pengganti Telnet untuk memberikan akses jarak jauh yang lebih aman.
3. Fungsi
Baik SSH maupun Telnet digunakan untuk mengakses dan mengelola sistem serta aplikasi secara remote. Keduanya memungkinkan pengguna menjalankan perintah, mengelola file dan direktori, serta mengontrol layanan di dalam sistem.
Namun, keunggulan SSH terletak pada keamanannya, termasuk dukungan untuk transfer file yang aman melalui SFTP (Secure File Transfer Protocol). Dengan kata lain, meskipun Telnet dan SSH memiliki fungsi serupa, hanya SSH yang menawarkan perlindungan terhadap ancaman keamanan.
4. Latar Belakang
Telnet lebih dulu digunakan sebagai protokol akses jarak jauh sebelum SSH diperkenalkan. Namun, karena tidak memiliki sistem enkripsi, penggunaannya semakin berkurang seiring dengan meningkatnya kesadaran akan risiko keamanan. SSH diciptakan sebagai solusi untuk menggantikan Telnet dan mengatasi kelemahan keamanannya.
SSH untuk Keamanan Akses Jarak Jauh
Secure Shell (SSH) adalah standar dalam menjaga keamanan akses jarak jauh ke server dan perangkat jaringan. SSH memiliki enkripsi yang kuat, autentikasi yang aman, serta perlindungan terhadap serangan siber, sehingga SSH dapat memastikan komunikasi tetap terenkripsi dan terlindungi dari ancaman.
Dibandingkan dengan protokol lama seperti Telnet, SSH menawarkan solusi yang lebih aman dan dapat diandalkan. Bagi administrator sistem maupun pengguna yang ingin mengelola server secara efisien dan tanpa risiko keamanan, memahami cara kerja SSH adalah langkah penting.
FAQ (Frequently Asked Question)
Kenapa saat login via SSH sering diminta memasukkan password meskipun sudah pakai key?
Itu biasanya terjadi karena file permission pada private key di sisi klien tidak diatur dengan benar. SSH sangat sensitif terhadap keamanan file; jika ~/.ssh/id_rsa terlalu terbuka (misalnya permission 644), SSH akan menolaknya. Pastikan permission-nya adalah 600, atau SSH akan abaikan key dan kembali minta password. Selain itu, pastikan public key benar-benar tersimpan di file authorized_keys di sisi server.
Apakah SSH hanya bisa digunakan untuk remote terminal ke server saja?
Tidak. SSH juga bisa digunakan untuk tunneling port (port forwarding), mengamankan koneksi aplikasi seperti database, dan mentransfer file lewat SCP atau SFTP. Bahkan bisa digunakan untuk membuat VPN sederhana. SSH jauh lebih fleksibel daripada sekadar akses terminal karena protokol ini mengenkripsi komunikasi dan bisa dipakai sebagai jembatan aman antar sistem dalam berbagai cara.
Mengapa koneksi SSH bisa ‘macet’ jika idle terlalu lama?
SSH default-nya tidak mengirim sinyal keep-alive, jadi firewall atau NAT router bisa menganggap koneksi tidak aktif dan memutusnya. Solusinya bisa dengan menambahkan pengaturan seperti ServerAliveInterval di klien atau ClientAliveInterval di server agar koneksi tetap dianggap hidup. Ini penting kalau kamu bekerja di jaringan kantor yang ketat atau VPN.
Apa perbedaan antara SSH key RSA, ECDSA, dan ED25519 yang sering bikin bingung?
RSA sudah lama digunakan dan kompatibel luas, tapi ukurannya besar dan kini dianggap kurang efisien. ECDSA lebih ringan, tapi ada keraguan soal keamanan jika kurva eliptiknya tidak diimplementasi dengan baik. ED25519 adalah algoritma modern yang cepat, kecil, dan lebih aman, serta tahan terhadap banyak jenis serangan kriptografi. Kalau kamu ingin kunci yang efisien dan aman, ED25519 sering jadi pilihan terbaik sekarang.
Apa sebenarnya yang terjadi saat pertama kali kita SSH ke server dan muncul pesan “The authenticity of host… can’t be established”?
Itu artinya kamu belum pernah terhubung ke server itu sebelumnya, jadi SSH tidak punya fingerprint server di file known_hosts. Saat kamu mengetik “yes”, SSH akan menyimpan fingerprint server itu ke file lokal. Jika fingerprint berubah di kemudian hari, SSH akan memperingatkan kemungkinan adanya serangan man-in-the-middle. Jadi, jangan sembarangan ketik “yes” kalau bukan server yang kamu kenal.
Mengapa SSH tetap aman meski berjalan di jaringan publik seperti Wi-Fi umum?
Karena semua komunikasi dienkripsi dari ujung ke ujung. Bahkan jika seseorang menangkap lalu lintas (packet sniffing), mereka hanya akan melihat data acak yang tidak bisa dibaca tanpa kunci. Protokol SSH juga menggunakan key exchange seperti Diffie-Hellman untuk memastikan kunci rahasia tidak pernah dikirim langsung dalam jaringan, sehingga sangat sulit dibobol lewat sniffing.
Apakah bisa membatasi pengguna SSH agar hanya bisa menjalankan perintah tertentu saja?
Bisa. Salah satu caranya adalah menggunakan ForceCommand di file sshd_config atau saat menambahkan public key di authorized_keys. Dengan cara ini, meskipun pengguna berhasil login, mereka hanya bisa menjalankan satu skrip atau perintah yang ditentukan, bukan shell penuh. Ini sangat berguna untuk membuat akses otomatis seperti backup atau upload data tanpa memberi kendali penuh atas sistem.
Apa bahaya menggunakan port default SSH (port 22) dan apakah perlu diganti?
Menggunakan port 22 tidak otomatis berbahaya, tapi sangat umum jadi target brute force attack. Banyak bot otomatis yang hanya memindai port 22 untuk mencoba login. Mengganti ke port lain (misalnya 2222) tidak meningkatkan keamanan secara teknis, tapi bisa menurunkan risiko serangan acak dari bot otomatis. Ini dikenal sebagai “security by obscurity”, bukan solusi utama, tapi tetap berguna sebagai lapisan tambahan.
Bagaimana caranya agar bisa SSH ke server tanpa password tapi tetap aman?
Gunakan SSH key-based authentication. Buat key pair di lokal, simpan private key di klien dan public key di server. Saat koneksi dilakukan, server akan memberi tantangan yang hanya bisa dijawab oleh private key yang sesuai. Ini bahkan lebih aman daripada password karena tidak bisa ditebak dan tidak dikirim melalui jaringan. Pastikan juga untuk melindungi private key dengan passphrase untuk menambah lapisan keamanan.
Bisakah kita melakukan remote SSH ke server meski server ada di belakang NAT tanpa IP publik?
Bisa, tapi perlu bantuan reverse SSH tunnel atau third-party relay seperti server perantara (jump host). Server di belakang NAT membuka koneksi outbound ke server relay dan membuat port tunnel balik. Dari sisi luar, kita tinggal konek ke relay, lalu lewat tunnel itu bisa akses server yang awalnya tidak punya IP publik. Ini teknik umum dalam DevOps dan juga pada sistem monitoring di perangkat IoT.
Baca Juga : Apa itu Telnet? Jenis, Fungsi, dan Cara Penggunaannya