This is an old revision of the document!
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
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 "[email protected]" # 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