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:
sudo apt update sudo apt install openssh-server
systemctl status ssh
Output normalnya akan menunjukkan service active (running).
/etc/ssh/sshd_config /etc/ssh/sshd_config.d/
# Default port (22) ssh user@192.168.1.5 # Dengan port tertentu ssh user@192.168.1.5 -p 6222
# 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
# 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 memudahkan login tanpa password dengan sistem public/private 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
# 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
ssh-copy-id user@server # Menyalin key tertentu ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
| 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 |
# 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
ssh server1