Paket 1 · Fondasi DevOpsModul E — Server Administration

SSH dan Remote Server Management

Mengelola server dari jarak jauh dengan SSH, autentikasi kunci, konfigurasi client/server, transfer file, dan tunneling.

SSH (Secure Shell) adalah cara standar mengakses server Linux dari jarak jauh. Modul ini membahas autentikasi, konfigurasi, transfer file, dan tunneling yang aman.

Cara kerja SSH

SSH membuat koneksi terenkripsi ke port 22 (default). Server menjalankan sshd, client memakai ssh.

ssh deploy@192.168.1.60
ssh deploy@web.lab.local
ssh -p 2222 deploy@103.47.132.10

Saat pertama kali terhubung, SSH menampilkan fingerprint host. Periksa dan terima jika sesuai.

Autentikasi kunci (disarankan)

Password rentan brute force. Kunci SSH jauh lebih aman.

Membuat pasangan kunci

ssh-keygen -t ed25519 -C "deploy@laptop"

File yang dihasilkan:

FileFungsi
~/.ssh/id_ed25519Private key — jangan dibagikan
~/.ssh/id_ed25519.pubPublic key — dipasang di server

Memasang public key

ssh-copy-id deploy@192.168.1.60

Atau manual:

cat ~/.ssh/id_ed25519.pub | ssh deploy@192.168.1.60 \
  'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'

Permission file

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

Private key adalah identitas Anda

Jangan pernah mengunggah private key ke Git, chat, atau server lain. Gunakan passphrase dan ssh-agent untuk perlindungan tambahan.

Konfigurasi client: ~/.ssh/config

Menyimpan konfigurasi membuat perintah lebih singkat.

nano ~/.ssh/config
Host proxmox
    HostName 192.168.1.50
    User root
    Port 22
    IdentityFile ~/.ssh/id_ed25519

Host web
    HostName 10.10.10.11
    User deploy
    ProxyJump proxmox

Gunakan:

ssh web

ProxyJump memungkinkan koneksi ke host internal melalui host perantara.

Konfigurasi server: sshd_config

File utama: /etc/ssh/sshd_config (atau file di /etc/ssh/sshd_config.d/).

sudo nano /etc/ssh/sshd_config

Konfigurasi dasar yang aman:

Port 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers deploy
MaxAuthTries 3
X11Forwarding no

Setelah mengubah:

sudo sshd -t
sudo systemctl reload ssh

Jangan kunci diri sendiri

Sebelum menonaktifkan login password, pastikan autentikasi kunci sudah berhasil. Buka sesi SSH kedua sebagai cadangan sebelum reload.

Transfer file

scp

scp file.txt deploy@192.168.1.60:/srv/app/
scp -r ./dist deploy@192.168.1.60:/srv/app/
scp deploy@192.168.1.60:/var/log/nginx/error.log ./

rsync

rsync lebih efisien untuk sinkronisasi karena hanya mengirim perubahan.

rsync -avz ./dist/ deploy@192.168.1.60:/srv/app/dist/
rsync -avz --delete ./public/ deploy@192.168.1.60:/srv/app/public/
OpsiFungsi
-aArsip: permission, waktu, symlink
-vVerbose
-zKompresi
--deleteHapus file di tujuan yang tidak ada di sumber

Port forwarding dan tunneling

Local forwarding

Meneruskan port lokal ke layanan di server:

ssh -L 8080:localhost:80 deploy@192.168.1.60

Buka http://localhost:8080 di laptop untuk mengakses web server di server.

Akses Proxmox UI lewat tunnel

ssh -L 8006:localhost:8006 root@192.168.1.50

Lalu buka https://localhost:8006.

Remote forwarding

Meneruskan port server ke layanan di laptop (jarang dipakai, gunakan dengan hati-hati):

ssh -R 9000:localhost:3000 deploy@192.168.1.60

SSH agent

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ssh-add -l

Agen menyimpan kunci yang sudah dibuka sehingga Anda tidak mengetik passphrase berulang.

Troubleshooting SSH

GejalaCek
Connection refusedsshd berjalan? systemctl status ssh
Permission denied (publickey)Permission .ssh, isi authorized_keys
TimeoutFirewall/routing, port, Tailscale
Terlalu banyak percobaanFail2ban atau MaxAuthTries
Host key berubahVerifikasi, lalu hapus entri lama di known_hosts

Debug dari client:

ssh -vvv deploy@192.168.1.60

Debug server:

journalctl -u ssh -n 50

Ringkasan

  • SSH mengenkripsi akses remote dan menjadi pintu utama administrasi server.
  • Gunakan autentikasi kunci, bukan password.
  • ~/.ssh/config merapikan koneksi; ProxyJump menembus host perantara.
  • scp/rsync untuk transfer, -L/-R untuk tunneling.

On this page