====== 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 "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
ForwardAgent yes
ServerAliveInterval 60
Compression yes
# Host tertentu
Host example.com
HostName example.com
User username
Port 22
IdentityFile ~/.ssh/id_rsa
# ProxyJump jump.example.com # Gunakan bastion/jump host
# Alias untuk koneksi cepat
Host server1
HostName 192.168.1.10
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519
=== Menggunakan alias ===
ssh server1