Apa Itu SSH? Arti SSH, Cara Kerja, dan Prosesnya
Secure Shell atau SSH adalah protokol administrasi remote yang memperbolehkan pengguna untuk mengontrol dan memodifikasi server remote mereka melalui internet. Layanan ini dibuat sebagai pengganti yang aman untuk Telnet yang tidak dienkripsi.
SSH menggunakan teknik kriptografi untuk memastikan semua komunikasi yang masuk dan keluar dari server remote terenkripsi. Bahkan di dalamnya juga tersedia mekanisme untuk mengautentikasi pengguna remote, mentransfer input dari klien ke host, dan mengirimkan hasilnya (output) kembali ke klien.
Apa Arti SSH?
Secure Shell Protocol atau SSH adalah protokol administrasi jarak jauh yang memungkinkan pengguna mengakses, mengontrol, dan memodifikasi server remote (jarak jauh) melalui internet.
Layanan SSH dibuat sebagai pengganti yang aman untuk Telnet yang tidak terenkripsi. SSH menggunakan teknik kriptografi untuk memastikan bahwa semua komunikasi menuju dan dari server remote dienkripsi dengan aman. SSH menyediakan mekanisme untuk mengautentikasi pengguna remote, mentransfer input dari klien ke host, dan menyampaikan output kembali ke klien.
Di bawah ini adalah contoh prompt SSH umum. Baik user Linux maupun macOS bisa menjalankan SSH di server remote mereka secara langsung dari jendela terminal. User Windows bahkan bisa menggunakan SSH client seperti Putty. Anda bisa menjalankan command shell seperti mengoperasikan komputer remote secara fisik.
Bagaimana Cara Kerja SSH?
Apabila menggunakan Linux atau Mac, Anda mungkin sudah tidak asing dengan SSH. Tapi kalau menggunakan Windows, Anda perlu menggunakan SSH client untuk membuat koneksi SSH. Salah satu SSH client yang paling banyak digunakan adalah PuTTY.
Bagi user Mac dan Linux, buka program terminal, kemudian ikuti langkah-langkahnya di bawah ini.
SSH command terdiri dari 3 bagian berbeda:
ssh {user}@{host}
Command SSH key menginstruksikan sistem bahwa Anda akan membuat Koneksi Secure Shell yang terenkripsi. {user} merujuk pada akun yang ingin Anda akses. Misalnya, Anda ingin mengakses user root, yang pada dasarnya serupa dengan system administrator yang memiliki semua hak untuk memodifikasi bagian sistem mana pun. {host} adalah komputer yang ingin Anda akses. Dalam hal ini, host bisa berupa alamat IP (misalnya 123.456.789.100) atau nama domain (misalnya, www.domain.tld).
Saat menekan tombol Enter, Anda akan diminta untuk memasukkan password dari akun yang diminta. Meskipun tidak ada informasi yang muncul di layar, password yang telah diketikkan sedang ditransmisikan. Setelah memasukkan password, tekan tombol Enter sekali lagi. Kalau password sudah benar, jendela terminal remote akan muncul.
Apabila ingin mempelajari penggunaan SSH, baca artikel kami lainnya yang membahas command SSH lebih lanjut.
Apa Saja Berbagai Teknik Enkripsi yang Digunakan?
Dibandingkan pendahulunya, kelebihan utama SSH adalah enkripsi untuk memastikan transfer informasi yang lebih aman antara host dan klien. Host adalah server remote yang ingin Anda akses, sementara client adalah komputer yang ingin Anda gunakan untuk mengakses host.
Ada tiga jenis enkripsi yang digunakan oleh SSH:
- Enkripsi simetris
- Enkripsi asimetris
- Hashing
Enkripsi Simetris
Enkripsi simetris merupakan bentuk enkripsi di mana secret key digunakan baik untuk mengenkripsi maupun mendekripsi pesan oleh klien dan juga host. Jadi, setiap orang yang memiliki key tersebut bisa mendekripsi pesan yang sedang ditransfer.
Enkripsi simetris sering disebut enkripsi shared key atau shared secret. Biasanya hanya satu key yang digunakan, atau terkadang sepasang key di mana satu key bisa dikalkulasikan dengan mudah menggunakan key yang lain.
Key simetris digunakan untuk mengenkripsi keseluruhan komunikasi selagi sesi SSH berlangsung. Baik klien maupun server memperoleh secret key menggunakan metode yang telah disetujui, dan key yang dihasilkan akan benar-benar dirahasiakan dari pihak ketiga mana pun.
Proses pembuatan key simetris dilakukan oleh algoritma pertukaran key (key exchange algorithm). Hal yang membuat algoritma ini aman adalah key tersebut tidak pernah ditransmisikan antara klien dan host, tapi dua komputer tersebut membagikan potongan data publik lalu memanipulasinya untuk menghitung secret key secara independen.
Meskipun sistem lain menyimpan data yang dibagikan secara publik, sistem tersebut tidak akan bisa mengalkulasikan key karena algoritma pertukaran key tidak diketahui.
Namun, perlu diketahui bahwa token rahasia tersebut bersifat khusus untuk setiap sesi SSH, dan dihasilkan sebelum autentikasi klien. Setelah key dihasilkan, semua paket yang ditransfer di antara dua sistem harus dienkripsi oleh private key. Hal ini termasuk password yang diketikkan oleh pengguna sehingga kredensial akan selalu dilindungi dari sniffer paket jaringan.
Ada berbagai jenis cipher enkripsi simetris, termasuk AES (Advanced Encryption Standard), CAST128, Blowfish, dan lain sebagainya. Sebelum membuat koneksi yang aman, klien dan host akan menentukan cipher yang digunakan, dengan menerbitkan daftar cipher yang didukung dalam urutan preferensi. Cipher yang paling banyak digunakan, dari daftar yang didukung oleh klien, dan ada dalam daftar host akan digunakan sebagai cipher dua arah.
Misalnya, ketika dua perangkat Ubuntu 14.04 LTS saling berkomunikasi melalui SSH, keduanya akan menggunakan aes128-ctr sebagai cipher default.
Enkripsi Asimetris
Tidak seperti enkripsi simetris, enkripsi asimetris menggunakan dua key yang terpisah untuk enkripsi dan dekripsi. Kedua key ini dikenal sebagai public key (kunci publik) dan private key (kunci pribadi). Secara bersama-sama, kedua key ini membentuk sepasang public-private key (public-private key pair).
Public key bisa digunakan oleh siapa pun untuk mengenkripsi pesan dan hanya bisa didekripsi oleh penerima yang memiliki private key, dan sebaliknya. Key ini terdiri dari kombinasi angka dan simbol yang panjang dan acak. Namun, keduanya dipasangkan menggunakan algoritma matematis yang kompleks.
Misalnya, untuk mengautentikasi pengirim, pesan akan dienkripsi menggunakan private key miliknya sendiri. Jadi, pesan hanya bisa didekripsi menggunakan public key pengirim tersebut. Perlu diketahui bahwa proses enkripsi dan dekripsi akan terjadi secara otomatis, Anda tidak perlu melakukan apa pun secara manual.
Nah, dalam SSH, enkripsi asimetris tidak digunakan untuk mengenkripsi keseluruhan sesi. Enkripsi ini hanya digunakan dalam algoritma pertukaran key enkripsi simetris. Sebelum memulai koneksi yang aman, kedua pihak membuat pasangan public-private key yang bersifat sementara, lalu berbagi private key miliknya masing-masing untuk menghasilkan key rahasia bersama.
Setelah komunikasi simetris yang aman dibuat, server menggunakan public key milik klien untuk melakukan pemeriksaan, lalu mengirimkannya ke klien untuk autentikasi. Apabila klien berhasil mendekripsi pesan, artinya pesan tersebut memiliki private key yang dibutuhkan untuk membuat koneksi, lalu sesi SSH pun dimulai.
Hashing
Hashing satu arah (one-way) merupakan salah satu bentuk kriptografi yang digunakan di dalam Koneksi Secure Shell. Fungsi one-way-hash berbeda dari dua jenis enkripsi tadi, dalam artian tidak dimaksudkan untuk didekripsi. Hash membuat nilai unik dengan panjang tetap untuk setiap input yang tidak menunjukkan trend yang bisa dieksploitasi. Jadi, hash sangat tidak mungkin dibalik.
Mudah untuk membuat hash kriptografi dari input yang diberikan, tapi sangat tidak mungkin untuk membuat input dari hash tersebut. Artinya, kalau klien memiliki input yang benar, mereka bisa membuat hash kriptografis dan membandingkan nilainya untuk memverifikasi apakah mereka memiliki input yang benar.
SSH menggunakan hash untuk memverifikasi keaslian pesan. Hal ini dilakukan menggunakan HMAC, atau Hash-based Message Authentication Codes. Kode ini memastikan bahwa command yang diterima tidak dimanipulasi dengan cara apa pun.
Ketika algoritma enkripsi simetris sedang dipilih, algoritma autentikasi pesan yang sesuai juga dipilih. Proses ini mirip dengan tahap pemilihan cipher, seperti yang tadi dijelaskan di bagian enkripsi simetris.
Setiap pesan yang ditransmisikan harus memiliki MAC, yang dikalkulasikan menggunakan key simetris, nomor urut packet, dan isi pesan. Pesan tersebut dikirim di luar data yang dienkripsi secara simetris sebagai bagian akhir dari packet komunikasi.
Cara Kerja SSH dengan Teknik Enkripsi
SSH bekerja dengan cara memanfaatkan metode klien-server untuk mengizinkan autentikasi dari dua sistem jarak jauh dan enkripsi data yang melewati keduanya.
SSH dijalankan pada TCP port 22 secara default (meskipun port SSH bisa diubah sesuai kebutuhan). Host (server) mengawasi port 22 (atau port SSH lainnya) untuk koneksi yang masuk. Port 22 mengelola koneksi aman dengan melakukan autentikasi klien dan membuat jaringan shell yang tepat apabila proses verifikasi berhasil.
Klien harus memulai koneksi SSH dengan menginisiasi TCP handshake dengan server, memastikan keamanan koneksi simetris, lalu memverifikasi apakah identitas yang ditampilkan oleh server sesuai dengan catatan sebelumnya (biasanya disimpan dalam file penyimpanan RSA key), kemudian menampilkan kredensial pengguna yang dibutuhkan untuk melakukan autentikasi koneksi.
Ada dua tahap dalam pembuatan koneksi: pertama, kedua sistem sama-sama menyetujui adanya standar enkripsi untuk mengamankan komunikasi mendatang, dan kedua, pengguna juga harus mengautentikasi identitasnya sendiri. Kalau kredensial tersebut sesuai, pengguna akan diberikan akses.
Negosiasi Enkripsi Sesi
Saat klien mencoba terhubung ke server melalui TCP, server memberikan protokol enkripsi dan versi masing-masing yang didukung. Kalau klien memiliki sepasang protokol dan versi yang sesuai dan serupa, persetujuan akan dibuat dan koneksi dimulai dengan protokol yang disetujui. Server juga menggunakan public key asimetris yang bisa digunakan klien untuk memverifikasi host.
Setelah itu, kedua pihak menggunakan Diffie-Hellman Key Exchange Algortihm untuk membuat key simetris. Algoritma ini memungkinkan klien dan server mengambil key enkripsi bersama yang selanjutnya digunakan untuk mengenkripsi keseluruhan sesi komunikasi.
Berikut cara kerja algoritma di level dasar:
- Baik klien maupun server menyetujui bilangan prima yang sangat besar, yang tentu saja tidak memiliki faktor kesamaan. Nilai ini juga disebut seed value.
- Berikutnya, kedua pihak menyetujui mekanisme enkripsi bersama untuk membuat rangkaian nilai lainnya dengan memanipulasi seed value menggunakan algoritma tertentu. Mekanisme ini, juga disebut generator enkripsi, melakukan operasi dalam skala besar terhadap seed tersebut. Contohnya adalah AES (Advanced Encryption Standard).
- Kedua pihak tersebut kemudian membuat bilangan prima lainnya secara mandiri. Bilangan prima ini digunakan sebagai private key rahasia (secret private key) untuk melakukan interaksi.
- Private key yang baru saja dibuat ini, dengan nomor dan algoritma enkripsi yang sama (misalnya, AES), digunakan untuk melakukan komputasi terhadap public key yang didistribusikan ke komputer lain.
- Kedua pihak kemudian menggunakan private key pribadi (personal private key) miliknya, public key bersama milik sistem lain, dan bilangan prima asli untuk membuat shared key akhir. Key ini secara terpisah dikomputasi oleh kedua komputer, tapi akan menghasilkan key enkripsi yang sama di kedua sisi.
- Sekarang, kedua sisi sudah memiliki key bersama, yang secara simetris bisa mengenkripsi keseluruhan sesi SSH. Key yang sama juga bisa digunakan untuk mengenkripsi dan mendekripsi pesan, seperti yang dijelaskan di bagian enkripsi simetris).
Setelah sesi aman yang terenkripsi secara simetris ini berhasil dibuat, pengguna harus melakukan autentikasi.
Autentikasi Pengguna
Tahap terakhir sebelum pengguna diberikan akses SSH adalah mengautentikasi kredensialnya. Untuk hal ini, kebanyakan pengguna SSH menggunakan password. Pengguna akan diminta untuk memasukkan username, kemudian password. Kredensial ini kemudian akan melewati tunnel enkripsi simetris dengan aman, mencegah pihak ketiga mana pun mencurinya.
Meskipun password dienkripsi, pengguna tetap tidak disarankan menggunakan password untuk koneksi yang aman. Sebab, ada banyak bot yang bisa menebak password standar atau password yang mudah untuk mencuri akses ke akun Anda.
Solusinya, gunakan SSH Key Pair sebagai cara alternatif yang direkomendasikan. SSH key merupakan rangkaian key asimetris yang digunakan untuk mengautentikasi pengguna tanpa harus memasukkan password.
Kesimpulan
Dengan mempelajari cara kerja SSH, Anda pun bisa memahami aspek-aspek keamanan teknologi ini. Banyak orang menganggap SSH adalah proses yang lama, terlalu ribet, dan sulit diikuti, padahal sebenarnya cukup mudah.
Pada dasarnya, komputer bisa menghitung hash dan mengautentikasi pengguna dengan sangat cepat. Justru, waktu paling lama yang akan Anda lalui adalah proses saat data ditransfer di internet.
Semoga tutorial SSH ini bisa membantu Anda memahami bahwa berbagai teknologi bisa digunakan bersama-sama untuk menciptakan sistem yang aman, dengan peran pentingnya masing-masing. Terima kasih sudah membaca!
Pertanyaan Umum seputar Apa Itu SSH dan Cara Kerjanya
Apa Arti SSH dan Apa Fungsinya?
Secure Shell atau SSH adalah protokol komunikasi jaringan yang memungkinkan dua komputer saling berkomunikasi satu sama lain. SSH juga memungkinkan transfer data antara dua komputer.
Apa Kepanjangan SSH?
SSH adalah singkatan dari protokol jaringan Secure Shell atau Secure Socket Shell.
Apa Perbedaan SSH dan SSL?
SSH berfungsi untuk menciptakan jaringan yang aman antarkomputer yang memungkinkan transfer data. Di sisi lain, SSL adalah sistem yang mengenkripsi data yang ditransfer untuk mencegah terjadinya kejahatan cyber dan phishing.
Komentar
March 10 2020
terimakasih atas pecerahannya