====== SSH (Secure Shell) ====== SSH (Secure Shell) adalah protokol jaringan yang digunakan untuk komunikasi aman antar komputer. Semua data yang dikirim melalui SSH dienkripsi sehingga terlindungi dari penyadapan maupun serangan. SSH banyak dipakai untuk: * Mengelola server jarak jauh * Transfer file dengan aman * Membuat koneksi terenkripsi di jaringan publik {{indexmenu>:linux:ssh:#2|tsort msort}} ===== Instalasi SSH Server (Ubuntu/Debian) ===== sudo apt update sudo apt install openssh-server === Mengecek status service === systemctl status ssh Output normalnya akan menunjukkan service **active (running)**. === Lokasi file konfigurasi utama === /etc/ssh/sshd_config /etc/ssh/sshd_config.d/ ---- ===== Menggunakan SSH ===== === Koneksi ke server === # Default port (22) ssh user@192.168.1.5 # Dengan port tertentu ssh user@192.168.1.5 -p 6222 === Menjalankan perintah langsung === # Menjalankan perintah di server ssh user@192.168.1.5 'ls -l' # Menjalankan script lokal di server ssh user@192.168.1.5 bash < script.sh # Kompres dan unduh file/folder dari server ssh user@192.168.1.5 "tar czf - ~/source" > output.tgz ---- ===== Transfer File dengan SCP ===== # Copy dari remote ke local scp user@server:/dir/file.ext ./dest/ # Copy dari local ke remote scp ./file.ext user@server:/dir/ # Copy folder (rekursif) scp -r user@server:/dir ./dest/ # Copy antar remote server scp user@server1:/file user@server2:/dir # Copy semua isi folder scp user@server:/dir/* ./ ---- ===== SSH Key ===== SSH Key memudahkan login tanpa password dengan sistem **public/private key**. === Membuat SSH Key === # RSA 4096 bit ssh-keygen -t rsa -b 4096 -C "your@mail.com" # Ed25519 (lebih modern & ringan) ssh-keygen -t ed25519 -C "comment's key" # Interaktif default ssh-keygen # Tentukan nama file key ssh-keygen -f ~/.ssh/custom_key === Operasi tambahan === # Buat public key dari private key ssh-keygen -y -f private.key > public.pub # Ubah komentar key ssh-keygen -c -f ~/.ssh/id_rsa # Ubah passphrase private key ssh-keygen -p -f ~/.ssh/id_rsa === Menyalin key ke server === ssh-copy-id user@server # Menyalin key tertentu ssh-copy-id -i ~/.ssh/id_rsa.pub user@server ==== Jenis Key ==== * rsa * ed25519 * dsa (lama, jarang dipakai) * ecdsa ==== Format Key ==== * PEM * PKCS8 ---- ===== File Konfigurasi SSH ===== ^ Path ^ Deskripsi | | /etc/ssh/ssh_config | Konfigurasi global (client) | | ~/.ssh/config | Konfigurasi user (client) | | ~/.ssh/id_{type} | Private key | | ~/.ssh/id_{type}.pub | Public key | | ~/.ssh/known_hosts | Daftar host yang dikenal | | ~/.ssh/authorized_keys | Public key yang diizinkan | ---- ===== Contoh Konfigurasi ~/.ssh/config ===== # Opsi global yang berlaku untuk semua host # Mengaktifkan SSH agent forwarding untuk semua koneksi ForwardAgent yes # Mengirim paket keepalive setiap 60 detik untuk semua koneksi ServerAliveInterval 60 # Mengaktifkan kompresi untuk semua koneksi Compression yes # Konfigurasi khusus host contoh.com Host example.com HostName example.com # Alamat host atau IP dari server User username # Username yang digunakan untuk koneksi Port 22 # Port yang digunakan untuk koneksi (default adalah 22) IdentityFile ~/.ssh/id_rsa # Lokasi file kunci privat # ProxyJump jump.example.com # Menggunakan jump host (SSH bastion) untuk host ini # Contoh mendefinisikan grup host (di-komentari) # HostGroup web-servers # Hostname 192.168.1.1 # User webuser # IdentityFile ~/.ssh/webserver_key # Alias spesifik host (di-komentari) # Host db # Hostname db.internal.example.com # User dbadmin # IdentityFile ~/.ssh/db_key # Opsi lanjutan untuk host tertentu # Host github.com # User git # Username alternatif untuk host ini # PreferredAuthentications publickey # Metode otentikasi yang diutamakan # CheckHostIP no # Tidak memeriksa alamat IP host remote # StrictHostKeyChecking accept-new # Menerima kunci host SSH baru secara otomatis # UserKnownHostsFile ~/.ssh/known_hosts_github # Menggunakan file known_hosts terpisah # Contoh menggunakan wildcard untuk multiple hosts (di-komentari) # Host *.example.net # User admin # Port 2222 # Akhir dari file konfigurasi SSH client === Menggunakan alias === ssh server1