Protokol SSH versi 2 memiliki arsitektur berlapis (layered architecture).
Tujuannya agar setiap lapisan punya fungsi jelas, lebih aman, dan mudah dikembangkan.
Tiga lapisan utama di SSH-2 adalah:
1. Lapisan Transportasi (Transport Layer)
- Tugas utamanya:
- Negosiasi awal (handshake) antara client dan server.
- Menentukan algoritma enkripsi, kompresi, dan integritas data.
- Menyediakan jalur komunikasi aman untuk lapisan atas.
- Karakteristik:
- Bisa mengirim/terima paket data hingga 32.768 byte (atau lebih, tergantung implementasi).
- Secara berkala melakukan re-keying (tukar kunci baru) → biasanya setelah 1 GB data atau 1 jam, mana yang lebih dulu.
Ibaratnya: ini adalah fondasi keamanan sebelum komunikasi lanjut ke tahap login atau kirim data.
2. Lapisan Otentikasi Pengguna (User Authentication Layer)
- Fungsinya: memverifikasi identitas pengguna (apakah benar orang yang ingin masuk).
- Server hanya menanggapi permintaan otentikasi dari client → jadi prosesnya client-driven.
Metode otentikasi yang umum:
- Password → user memasukkan sandi. (Kadang tidak didukung semua program SSH).
- Public Key → menggunakan pasangan kunci (RSA, DSA, EdDSA, dll).
- Keyboard-Interactive → server mengirim pertanyaan (prompt), user menjawab. Bisa dipakai untuk one-time password (OTP) seperti S/Key, SecurID.
- API Authentication → integrasi dengan sistem otentikasi eksternal, misalnya Kerberos 5 atau NTLM. Biasanya dipakai di SSH komersial untuk single sign-on.
3. Lapisan Koneksi (Connection Layer)
- Lapisan ini mengatur kanal (channels) dalam koneksi SSH.
- Satu koneksi SSH bisa berisi banyak kanal yang berjalan bersamaan, misalnya:
- Shell/terminal (akses command line server)
- SFTP / SCP (transfer file)
- Direct-tcpip (client → server forwarding)
- Forwarded-tcpip (server → client forwarding)
Selain itu, lapisan ini juga menangani:
- Perubahan ukuran terminal.
- Exit code dari proses di server.
- Port forwarding (meneruskan koneksi melalui SSH).
4. SSHFP DNS Record
- Ekstensi tambahan untuk keamanan.
- Menyimpan sidik jari (fingerprint) kunci publik SSH di DNS.
- Fungsinya membantu memverifikasi keaslian host (apakah benar server yang dituju, bukan server palsu).