SSH (Secure Shell) adalah protokol jaringan yang memungkinkan komunikasi aman antar komputer. SSH mengenkripsi semua data yang dikirim antara dua komputer, sehingga melindungi data dari pengintaian dan peretasan. SSH sering digunakan untuk mengelola server dari jarak jauh, mentransfer file dengan aman, dan membuat koneksi aman ke jaringan publik.
$ sudo apt update
$ sudo apt install openssh-server
Service:
$ systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-11-20 06:58:17 UTC; 41min ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 868 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 899 (sshd)
Tasks: 1 (limit: 4515)
Memory: 8.0M
CPU: 418ms
CGroup: /system.slice/ssh.service
└─899 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
File config :
/etc/ssh/sshd_config
/etc/ssh/sshd_config.d
# Connect ke server (default port 22)
ssh [email protected]
# Connect dengan spesifik port
ssh [email protected] -p 6222
# Executes comand remote
$ ssh [email protected] 'ls -l'
# menjalankan script
$ ssh [email protected] bash < script.sh
# Compresses dan download dari server
$ ssh [email protected] "tar cvzf - ~/source" > output.tgz
# Copy dari remote ke local
$ scp user@server:/dir/file.ext dest/
# Copy antar remote server
$ scp user@server:/file user@server:/dir
# Copy local to server
$ scp dest/file.ext user@server:/dir
# Copy folder
$ scp -r user@server:/dir dest/
# Copy semua file dari folder
$ scp user@server:/dir/* dest/
# Copy dari folder server ke curent folder
$ scp user@server:/dir/* .
# Generate RSA 4096 bit key dengan email sebagai comment
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
# Generate ed25519
$ ssh-keygen -t ed25519 -C "comment's key"
# Generate a key intraktif
$ ssh-keygen
# Specify filename
$ ssh-keygen -f ~/.ssh/filename
# Generate public key dari private key
$ ssh-keygen -y -f private.key > public.pub
# Ganti comment
$ ssh-keygen -c -f ~/.ssh/id_rsa
# ganti private key passphrase
$ ssh-keygen -p -f ~/.ssh/id_rsa
-t |
Type of key | |
-b |
The number of bits in the key | |
-C |
Provides a new comment |
$ ssh-copy-id user@server
# Copy spesifik key
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
/etc/ssh/ssh_config |
System-wide config |
~/.ssh/config |
User-specific config |
~/.ssh/id_{type} |
Private key |
~/.ssh/id_{type}.pub |
Public key |
~/.ssh/known_hosts |
Logged in host |
~/.ssh/authorized_keys |
Authorized login key |
# 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
Launch by alias
$ ssh server1