Pilih Laman

sumber : https://www.hostinger.co.id/tutorial/cara-kerja-ssh/

cara kerja ssh

SSH Adalah

SSH, atau Secure Shell, merupakan protokol administrasi remote yang memperbolehkan pengguna untuk mengontrol dan memodifikasi server remote mereka melalui internet. Layanan tersebut dibuat sebagai pengganti yang aman untuk Telnet yang tidak dienkripsi dan menggunakan teknik kriptografi untuk memastikan semua komunikasi yang masuk dan keluar dari server remote terjadi secara terenkripsi. Layanan tersebut juga menyediakan mekanisme untuk mengautentikasi pengguna remote, mentranfer input dari klien ke host, dan mengirimkan hasilnya (output) kembali ke klien.

Gambar di bawah ini menunjukkan SSH Window tertentu. Siapa pun pengguna Linux atau macOS bisa menggunakan SSH di dalam server remote mereka secara langsung dari jendela terminal. Pengguna Windows dapat memanfaatkan aplikasi SSH client, seperti Putty. Anda dapat menjalankan command shell dengan cara yang sama seperti jika Anda mengoperasikan komputer remote secara fisik.

Contoh koneksi SSH yang menampilkan cara kerja SSH

Tutorial SSH ini meliputi pengertian dasar bagaimana cara kerja SSH, beserta teknologi mendasar yang digunakan oleh protokol untuk menawarkan metode yang aman dari akses remote. Tutorial ini juga meliputi layer dan tipe yang berbeda dari enkripsi yang digunakan, bersamaan dengan tujuan tiap layer.

Cara Kerja SSH

Jika saat ini Anda menggunakan Linux atau Mac, maka bukan perkara yang sulit saat menggunakan SSH. Bilamana Anda menggunakan Windows, maka Anda perlu memiliki SSH client untuk membuka koneksi SSH. SSH client yang paling banyak digunakan adalah PuTTY. Informasi selengkapnya bisa Anda baca di sini.

Untuk pengguna Mac dan Linux, buka program terminal dan kemudian ikuti prosedurnya di bawah ini:

SSH command terdiri atas 3 bagian berbeda:

ssh {user}@{host}

Command SSH key memberi perintah pada sistem Anda bahwa Anda ingin membuka Koneksi Secure Shell yang dienkripsi. {user} merujuk pada akun yang ingin Anda akses. Misalnya, Anda ingin mengakses pengguna root, yang pada dasarnya sama untuk administrator sistem dengan hak lengkap untuk memodifikasi apa pun pada sistem. {host} merujuk pada komputer yang ingin Anda akses. Bisa jadi ini adalah alamat IP (misalnya, 244.235.23.19) atau nama domain (misalnya, www.xyzdomain.com).

Pada saat Anda menekan tombol Enter, Anda akan diminta untuk memasukkan password untuk akun yang diminta. Ketika Anda mengetikkan password, Anda tidak akan melihat apa pun di layar. Padahal, password Anda sedang ditransmisikan. Setelah memasukkan password, tekan tombol Enter sekali lagi. Jika password yang Anda masukkan sudah benar, maka akan muncul jendela terminal remote.

Untuk informasi selengkapnya mengenai command SSH, dapat Anda baca di sini.

Memahami Teknik Enkripsi yang Berbeda

Kelebihan berarti yang ditawarkan oleh SSH melalui predesesornya adalah penggunaan enkripsi untuk memastikan transfer informasi yang lebih aman antara host dan klien. Host merujuk pada server remote yang ingin Anda akses, sedangkan client merupakan komputer yang ingin Anda gunakan untuk mengakses host. Ada tiga teknologi enkripsi berbeda yang digunakan oleh SSH:

  1. Enkripsi simetris
  2. Enkripsi asimetris
  3. Hashing

Enkripsi Simetris

Enkripsi simetris merupakan bentuk dari enkripsi di mana secret key digunakan baik untuk enkripsi maupun dekripsi pesan oleh klien dan juga host. Secara efektif, setiap orang yang memiliki key dapat mendekripsi pesan yang sedang ditransfer.

Tutrial SSH - Enkripsi Simetris

Enkripsi simetris sering disebut enkripsi shared key atau shared secret. Biasanya hanya satu key yang digunakan, atau terkadang sepasang key di mana satu key dapat dikalkulasi dengan mudah menggunakan key yang lain.

Key simetris digunakan untuk mengenkripsi keseluruhan komunikasi selagi Sesi SSH. Baik klien maupun server memperoleh secret key menggunakan metode yang telah disetujui, dan resultant key tidak akan pernah dibritahukan kepada pihak ketiga mana pun. Proses pembuatan key simetris dilakukan oleh algoritma pertukaran key. Yang membuat algoritma ini aman adalah fakta bahwa key tersebut tidak pernah ditransmisi di antara klien dan host. Alih-alih, dua komputer membagikan potongan data publik dan kemudian memanipulasinya untuk menghitung secret key secara independen. Meskipun sistem lain menyimpan data yang dibagikan secara publik, sistem tersebut tidak akan bisa mengkalkulasi key karena algoritma pertukaran key tidak diketahui.

Akan tetapi, perlu diketahui bahwa secret token khusus untuk setiap sesi SSH, dan sebelumnya dibuat untuk autentikasi klien. Setelah key selesai dibuat, semua paket yang dipindahkan di antara dua sistem harus dienkripsi oleh private key. Hal ini termasuk password yang diketikkan oleh pengguna, sehingga kredensi akan selalu dilindungi dari penganalisa paket jaringan.

Terdapat berbagai cypher enkripsi yang simetris, termasuk , tetapi tidak terbatas pada, AES (Advanced Encryption Standard), CAST128, Blowfish, dll. Sebelum membuat koneksi yang aman, klien dan host memutuskan mana cypher yang akan digunakan, dengan menerbitkan daftar cypher yang didukung dalam urutan preferensi. Cypher yang paling banyak digunakan dari cypher yang didukung klien yang ada di daftar host digunakan sebagai cypher dua arah.

Misalnya, jika dua sistem Ubuntu 14.04 LTS saling berkomunikasi melalui SSH, maka kedua sistem tersebut akan menggunakan aes128-ctr sebagai cipher standarnya.

Enkripsi Asimetris

Tidak seperti enkripsi simetris, enkripsi asimetris menggunakan dua key yang terpisah untuk enkripsi dan dekripsi. Kedua key ini dikenal sebagai public key dan private key. Secara bersama-sama, kedua key ini membentuk sepasang public-private key.

Enkripsi Asimetris

Public key, seperti namanya, secara terbuka didistribusikan dan dibagian dengan semua pihak. Meskipun terkait erat dengan private key dal hal fungsionalitas, komputasi tidak dapat dilakukan pada private key dari public key. Hubungan di antara kedua key ini sangat rumit: sebuah pesan yang dienkripsi dengan sistem public key hanya dapat didekripsi oleh sistem yang sama milik private key. Hubungan satu arah ini mengindikasikan bahwa public key tidak dapat mendekripsi pesannya sendiri maupun mendekripsi apa pun yang telah dienkripsi oleh private key.

Private key harus tetap private, contohnya untuk koneksi yang hendak diamankan sehingga tidak boleh ada pihak ketiga yang mengetahuinya. Kelebihan dari seluruh koneksi tersebut terletak pada fakta bahwa private key tidak pernah diizinkan untuk diketahui sebagaimanan komponen tersebut merupakan satu-satunya komponen yang bisa mendekripsi pesan yang telah dienkripsi menggunakan public key. Oleh karena itu, pihak mana pun dengan kemampuannya untuk mendekripsi pesan yang sudah diketahui secara publik harus memiliki private key yang sesuai.

Tidak seperti persepsi pada umumnya, enkripsi asimetris tidak digunakan untuk mengenkripsi keseluruhan SSH. Alih-alih, enskripsi asimetris hanya digunakan pada saat algoritma pertukara key dari enkripsi simetris. Sebelum memulai menggunakan koneksi yang telah diamankan, kedua pihak membuat sepasang public-private key yang bersifat sementara, dan membagikan masing-masing private key-nya untuk menghasilkan shared secret key.

Setelah jaringan komunikasi simetris yang aman telah dibuat, server menggunakan public key milik klien untuk membuat dan menolak serta mengirimkan komunikasi simetris tersebut ke klien guna memperoleh autentikasi. Apabila klien berhasil mendekripsi pesan, maka pesan tersebut memiliki private key yang dibutuhkan untuk membuat koneksi. Pekerjaan SSH pun dimulai.

Hashing

Hashing satu arah (one-way) merupakan salah satu bentuk dari kriptografi yang digunakan di dalam Koneksi Secure Shell. Fungsi one-way-hash berbeda dari dua bentuk enkripsi yang telah disebutkan di atas dalam artian tidak dimaksudkan untuk didekripsi. Fungsi dari one-way-hash adalah membuat value unik dari panjang tetap untuk setiap input yang tidak menunjukkan trend jelas yang dapat dieksploitasi. Karena itulah fungsi-fungsi tersebut sangat tidak mungkin untuk dibalik.

Hash

Terbilang mudah untuk membuat hash kriptografi dari input yang diberikan, tetapi sangat tidak mungkin untuk membuat input dari hash tersebut. Hal ini berarti jika klien menyimpan input yang benar, maka ia bisa membuat hash kripto-grafis dan membandingkan value-nya untuk memverifikasi apakah klien tersebut memiliki input yang benar.

SSH menggunakan hash untuk memverifikasi keaslian pesan. Kita dapat melakukannya menggunakan HMAC, atau yang dikenal dengan Hash-based Message Authentication Codes. Langkah ini memastikan jika command yang diterima tidak dimanipulasi dengan cara apa pun.

Pada saat algoritma enkripsi simetris sedang dipilih, algoritma autentikasi pesan yang sesuai juga dipilih. Proses ini bekerja dalam cara yang hampir sama dengan cara ketika cipher dipilih, seperti yang telah dijelaskan pada bagian enkripsi simetris.

Setiap pesan yang ditransmisi harus memiliki MAC, yang dihitung menggunakan key simetris, nomor urut paket, dan isi pesan. Pesan tersebut dikirim di luar data enkripsi simetris sebagai bagian akhir dari paket komunikasi.

Cara Kerja SSH dengan Teknik Enkripsi

SSH bekerja dengan cara memanfaatkan metode klien-server guna memperbolehkan autentikasi dari dua sistem remot dan enkripsi data yang melewati kedua sistem remote tersebut.

SSH dijalankan pada TCP port 22 secara standar (meskipun dapat 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 bilamana proses verifikasi berhasil.

Klien dan Server SSH

Sebelum memulai koneksi SSH, klien terlebih dulu harus menghubungkan TCP handshake dengan server, lalu memastikan koneksi simetris sudah aman, kemudian memverfikasi apakah identitas yang ditampilkan oleh server sesuai dengan catatan sebelumnya (biasanya di simpan dalam file penyimpanan RSA key), dan menampilkan kredensial pengguna yang dibutuhkan untuk melakukan autentikasi koneksi.

Ada dua tahap dalam membuat koneksi: pertama-tama, kedua sistem sama-sama menyetujui adanya standar enkripsi untuk mengamankan komunikasi, dan kedua, pengguna juga harus melakukan autentikasi pada identitas mereka sendiri. Jika kredensial tersebut sesuai, maka pengguna akan diberikan akses.

Negosiasi terhadap Enkripsi

Pada saat klien mencoba untuk terhubung ke server melalui TCP, server memberikan protokol enkripsi dan versi masing-masing yang didukung. Apabila klien memiliki sepasang protokol dan versi yang sesuai dan hampir serupa, maka persetujuan dibuat dan koneksi dimulai dengan protokol yang diterima. Server juga menggunakan public key yang asimetris di mana klien dapat menggunakannya untuk memverifikasi keaslian host.

Setelah itu, kedua pihak tersebut menggunakan apa yang disebut sebagai Diffie-Hellman Key Exchange Algortihm untuk membuat key simetris. Algoritman ini memperbolehkan baik klien maupun server untuk mengambil shared encryption key yang akan digunakan selanjutnya untuk mengenkripsi keseluruhan bagian komunikasi.

Berikut cara kerja algoritma di level dasar:

  1. Baik klien maupun server mengetahui prime number yang sangat besar, yang tentu saja tidak memiliki faktor kesamaan. Value prime number ini juga dikenal dengan nama seed value.
  2. Kedua pihak mengetahui mekanisme enkripsi pada umumnya untuk membuat seperangkat value lainnya dengan memanipulasi seed value dengan cara algoritma tertentu. Mekanisme ini, juga disebut sebagai pembuat enkripsi, melakukan operasi besar-besaran pada seed tersebut. Contohnya adalah AES (Advanced Encryption Standard).
  3. Secara mandiri, kedua pihak tersebut membuat prime number lainnya. Prime number ini digunakan sebagai private key rahasia saat melakukan interaksi.
  4. Private key yang baru saja dibuat, dengan nomor yang dibagikan dan algoritma enkripsi (misalnya, AES), digunakan untuk melakukan komputasi terhadap public key yang didistribsikan ke komputer lain.
  5. Pihak ini kemudian menggunakan private key pribadi mereka, shared public key milik sistem lain dan prime number asli untuk membuat shared key akhir. Secara terpisah, key ini dikomputasi oleh kedua komputer, tetapi tetap menghasilkan key enkripsi yang sama di kedua sisi.
  6. Kini kedua sisi tersebut sudah memiliki shared key. Secara simetris, kedua sisi ini dapat mengenkripsi keseluruhan bagian SSH. Key yang sama dapat digunakan untuk mengenkripsi dan mendekripsi pesan (baca: bagian enkripsi simetris).

Setelah enkripsi simetris yang diamankan berhasil dibuat, maka pengguna harus melakukan autentikasi.

Autentikasi Pengguna

Tahap terakhir sebelum pengguna diberikan hak akses ke server adalah dengan melakukan autentikasi pada kredensialnya. Untuk hal ini, kebanyakan pengguna SSH menggunakan password. Pengguna akan diminta untuk memasukkan username, kemudian password. Dengan aman, kredensial ini akan dikirimkan melewati tunnel enkripsi simetris, sehingga pihak ketiga mana pun tidak dapat mencurinya.

Meskipun password dienkripsi, masih tidak disarankan bagi pengguna untuk menggunakan password di koneksi yang aman. Hal ini dikarenakan banyaknya bot yang bisa mencuri password standar atau yang dapat ditebak dengan mudah guna memperoleh akses ke akun Anda. Sebaiknya, gunakan SSH Key Pair sebagai cara alternatifnya.

SSH Key Pair merupakan seperangkat key asimetris yang digunakan untuk mengautentikasi pengguna tanpa harus memasukkan password.

Kesimpulan

Dengan mempelajari lebih jauh tentang cara kerja SSH, pengguna dapat memahami aspek keamanan dari teknologi ini. Banyak orang menganggap proses ini terlalu sulit dan tidak mudah untuk dipahami dan diikuti. Akan tetapi, sebenarnya caranya sangat mudah dan tidak seperti yang dibayangkan oleh sebagian besar orang. Jika Anda bertanya-tanya berapa lama waktu yang diperlukan komputer untuk menghitung hash dan mengautentikasi pengguna, maka jawabannya adalah sangat cepat. Pada kenyataannya, Anda akan menghabiskan waktu paling banyak saat mentransfer data di internet.