system:linux:ssh:main

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
system:linux:ssh:main [2026/01/26 20:38] – removed - external edit (Unknown date) 127.0.0.1system:linux:ssh:main [2026/02/01 21:08] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== 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
 +
 +{{indexmenu>:linux:ssh:#2|tsort msort}}
 +
 +===== Instalasi SSH Server (Ubuntu/Debian) =====
 +
 +<code bash>
 +sudo apt update
 +sudo apt install openssh-server
 +</code>
 +
 +=== Mengecek status service ===
 +<code bash>
 +systemctl status ssh
 +</code>
 +
 +Output normalnya akan menunjukkan service **active (running)**.  
 +
 +=== Lokasi file konfigurasi utama ===
 +<code>
 +/etc/ssh/sshd_config
 +/etc/ssh/sshd_config.d/
 +</code>
 +
 +----
 +
 +===== Menggunakan SSH =====
 +
 +=== Koneksi ke server ===
 +<code bash>
 +# Default port (22)
 +ssh [email protected]
 +
 +# Dengan port tertentu
 +ssh [email protected] -p 6222
 +</code>
 +
 +=== Menjalankan perintah langsung ===
 +<code bash>
 +# Menjalankan perintah di server
 +ssh [email protected] 'ls -l'
 +
 +# Menjalankan script lokal di server
 +ssh [email protected] bash < script.sh
 +
 +# Kompres dan unduh file/folder dari server
 +ssh [email protected] "tar czf - ~/source" > output.tgz
 +</code>
 +
 +----
 +
 +===== Transfer File dengan SCP =====
 +<code bash>
 +# 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/* ./
 +</code>
 +
 +----
 +
 +===== SSH Key =====
 +
 +SSH Key memudahkan login tanpa password dengan sistem **public/private key**.
 +
 +=== Membuat SSH Key ===
 +<code bash>
 +# 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
 +</code>
 +
 +=== Operasi tambahan ===
 +<code bash>
 +# 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
 +</code>
 +
 +=== Menyalin key ke server ===
 +<code bash>
 +ssh-copy-id user@server
 +
 +# Menyalin key tertentu
 +ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
 +</code>
 +
 +==== 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 =====
 +
 +<code>
 +# 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
 +</code>
 +
 +=== Menggunakan alias ===
 +<code bash>
 +ssh server1
 +</code>