Panduan Lengkap Konfigurasi SSH Ubuntu | Pemasangan, Penambahbaikan Keselamatan, dan Penyelesaian Masalah

目次

1. Pengenalan

Menyiapkan SSH pada Ubuntu adalah penting untuk mengurus pelayan jauh. SSH (Secure Shell) ialah protokol yang menyediakan komunikasi terenkripsi yang selamat, banyak digunakan untuk akses pelayan jauh, pelaksanaan perintah, dan pemindahan fail.
Dalam panduan ini, kami akan membincangkan segala-galanya dari pemasangan asas hingga konfigurasi keselamatan lanjutan untuk SSH pada Ubuntu.

1.1 Mengapa Menyediakan SSH pada Ubuntu?

1.1.1 Apa itu SSH?

SSH (Secure Shell) ialah protokol yang direka untuk komunikasi selamat melalui rangkaian. Ia biasanya digunakan untuk log masuk ke pelayan jauh, memindahkan fail, dan tunneling (pemajuan port). Berbeza dengan protokol tradisional seperti Telnet atau FTP, SSH menyulitkan semua komunikasi, menjadikannya sangat selamat.

1.1.2 Bila Anda Memerlukan SSH pada Ubuntu?

SSH berguna untuk pengurusan jauh dalam pelbagai senario, seperti:

  • Mengurus pelayan awan : Perkhidmatan awan seperti AWS, GCP, dan Vultr menggunakan SSH untuk akses pelayan jauh.
  • Operasi jauh dalam persekitaran LAN : Mengakses pelayan dalaman atau mesin pembangunan melalui SSH untuk kerja jauh.
  • Mengurus peranti IoT : Mengawal peranti terbenam seperti Raspberry Pi dari jauh.

Secara lalai, SSH dilumpuhkan pada Ubuntu. Untuk menggunakannya, anda mesti memasang dan mengkonfigurasikannya secara manual.

2. Konfigurasi SSH Asas

Untuk menggunakan SSH pada Ubuntu, anda perlu memasang pelayan SSH (OpenSSH) dan mengkonfigurasikannya dengan betul. Bahagian ini merangkumi pemasangan, tetapan asas, konfigurasi firewall, dan cara menyambung ke pelayan anda.

2.1 Memasang dan Memulakan OpenSSH

2.1.1 Apa itu OpenSSH?

OpenSSH (Open Secure Shell) ialah pelaksanaan sumber terbuka bagi protokol SSH. Ia menyokong sambungan jauh, pemindahan fail selamat (SCP dan SFTP), serta pemajuan port.

2.1.2 Memasang OpenSSH

Secara lalai, Ubuntu tidak datang dengan pelayan SSH yang dipasang terlebih dahulu. Gunakan perintah berikut untuk memasangnya:

sudo apt update && sudo apt install -y openssh-server

Perintah ini mengemas kini senarai pakej dan memasang pelayan OpenSSH.

2.1.3 Memulakan dan Mengaktifkan Pelayan SSH

Setelah dipasang, mulakan pelayan SSH dan aktifkan supaya ia dilancarkan semasa boot.

sudo systemctl enable --now ssh

Pilihan enable memastikan SSH bermula secara automatik apabila OS boot.

2.1.4 Mengesahkan Status SSH

Untuk memeriksa sama ada pelayan SSH sedang berjalan, gunakan:

systemctl status ssh

Jika anda melihat output seperti berikut, SSH sedang berjalan dengan betul:

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago

Jika anda melihat inactive (dead) atau failed, mulakan perkhidmatan secara manual:

sudo systemctl start ssh

2.2 Mengkonfigurasi Firewall (UFW)

Ubuntu menyediakan ufw (Uncomplicated Firewall) untuk pengurusan firewall yang mudah. Anda perlu mengkonfigurasi UFW supaya membenarkan sambungan SSH.

2.2.1 Memeriksa Status UFW

Periksa status firewall semasa menggunakan:

sudo ufw status

Contoh output (jika UFW dilumpuhkan):

Status: inactive

Contoh output (jika UFW diaktifkan):

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere

2.2.2 Membenarkan Trafik SSH

Untuk membenarkan sambungan SSH pada port lalai 22, jalankan:

sudo ufw allow ssh

Sebagai alternatif, nyatakan port secara eksplisit:

sudo ufw allow 22/tcp

2.2.3 Mengaktifkan UFW

Jika UFW dilumpuhkan, aktifkan dengan:

sudo ufw enable

Sebelum mengaktifkan UFW, pastikan SSH telah dibenarkan, atau anda mungkin terkunci keluar.

2.2.4 Mengesahkan Tetapan UFW

Periksa sama ada peraturan firewall telah diterapkan dengan betul:

sudo ufw status verbose

Contoh output:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

Jika anda melihat ini, SSH dibenarkan melalui firewall.

2.3 Connecting to SSH

Setelah pelayan SSH berjalan, anda boleh menyambung dari PC klien.

2.3.1 Connecting from Linux/macOS

Pada Linux atau macOS, buka terminal dan jalankan:

ssh username@server-ip-address

Contoh:

ssh user@192.168.1.100

Pada sambungan pertama, anda mungkin melihat amaran keselamatan seperti ini:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?

Taip yes dan tekan Enter untuk meneruskan.

2.3.2 Connecting from Windows

Pada Windows, anda boleh menggunakan PowerShell atau PuTTY untuk menyambung melalui SSH.

Menggunakan PowerShell
Windows 10 dan versi lebih baru menyertakan klien SSH dalam PowerShell. Sambung dengan:

ssh username@server-ip-address

Menggunakan PuTTY

  1. Muat turun dan pasang PuTTY dari laman rasmi .
  2. Buka PuTTY dan masukkan alamat IP pelayan dalam Host Name (or IP address) .
  3. Tetapkan Connection type kepada SSH dan klik Open .
  4. Masukkan nama pengguna dan kata laluan anda untuk menyambung.

3. Enhancing SSH Security

SSH adalah alat yang kuat untuk akses jauh, tetapi membiarkannya dengan tetapan lalai boleh menimbulkan risiko keselamatan. Penyerang sering menyasarkan pelayan SSH menggunakan serangan brute force atau pengimbasan port. Untuk mewujudkan persekitaran SSH yang lebih selamat, adalah penting untuk menerapkan konfigurasi keselamatan yang betul.

3.1 Disabling Root Login

Secara lalai, Ubuntu mungkin membenarkan log masuk root melalui SSH. Oleh kerana akaun root mempunyai keistimewaan sistem penuh, ia menjadi sasaran biasa bagi penyerang. Menyahaktifkan log masuk root dan menggunakan akaun pengguna biasa sebaliknya secara signifikan meningkatkan keselamatan.

3.1.1 Configuration Steps

  1. Edit fail konfigurasi SSH /etc/ssh/sshd_config .
    sudo nano /etc/ssh/sshd_config
    
  1. Cari baris berikut dan ubah menjadi PermitRootLogin no .
    PermitRootLogin no
    
  1. Simpan fail dan mulakan semula perkhidmatan SSH.
    sudo systemctl restart ssh
    
  1. Sahkan bahawa tetapan telah diterapkan.
    sudo grep PermitRootLogin /etc/ssh/sshd_config
    

Jika output menunjukkan PermitRootLogin no, tetapan telah berjaya diterapkan.

3.2 Disabling Password Authentication and Enabling Public Key Authentication

Menggunakan pengesahan kunci awam jauh lebih selamat berbanding bergantung pada pengesahan kata laluan. Dengan pengesahan kunci awam, anda tidak perlu memasukkan kata laluan, mengurangkan risiko serangan brute force.

3.2.1 Generating an SSH Key Pair

Pada PC tempatan anda, jana sepasang kunci SSH:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

Ini akan menghasilkan dua fail:

  • Kunci peribadi (id_rsa)Simpan ini pada PC tempatan anda (jangan pernah kongsikan secara awam).
  • Kunci awam (id_rsa.pub)Salin ini ke pelayan.

3.2.2 Copying the Public Key to the Server

Gunakan perintah berikut untuk menyalin kunci awam anda ke pelayan:

ssh-copy-id username@server-ip-address

3.2.3 Disabling Password Authentication

Edit fail konfigurasi SSH:

sudo nano /etc/ssh/sshd_config

Cari baris berikut dan ubah menjadi:

PasswordAuthentication no

Mulakan semula SSH untuk menerapkan perubahan:

sudo systemctl restart ssh

3.3 Restricting SSH Access to Specific Users

Untuk meningkatkan keselamatan, anda boleh mengehadkan akses SSH kepada pengguna tertentu.

3.3.1 Configuration Steps

  1. Buka fail konfigurasi SSH.
    sudo nano /etc/ssh/sshd_config
    
  1. Tambahkan baris berikut, menentukan pengguna yang dibenarkan.
    AllowUsers user1 user2
    
  1. Mulakan semula SSH untuk menerapkan perubahan.
    sudo systemctl restart ssh
    

3.4 Changing the SSH Port

Port SSH lalai (22) sering menjadi sasaran penyerang. Menukarnya ke port yang tidak standard dapat mengurangkan risiko serangan automatik.

3.4.1 Configuration Steps

  1. Buka fail konfigurasi SSH.
    sudo nano /etc/ssh/sshd_config
    
  1. Cari baris berikut dan ubahnya kepada port tersuai (contoh, 2200 ).
    Port 2200
    
  1. Simpan fail dan mulakan semula SSH.
    sudo systemctl restart ssh
    

3.4.2 Mengemas kini Tetapan Firewall

Selepas menukar port SSH, benarkan port baru melalui UFW:

sudo ufw allow 2200/tcp

Sahkan tetapan:

sudo ufw status

3.5 Mencegah Serangan Brute Force dengan Fail2Ban

Fail2Ban ialah alat yang mengesan percubaan log masuk SSH yang gagal dan sementara menyekat alamat IP yang menyerang.

3.5.1 Memasang Fail2Ban

sudo apt install fail2ban -y

3.5.2 Membuat Fail Konfigurasi

Salin fail konfigurasi lalai:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Edit fail konfigurasi:

sudo nano /etc/fail2ban/jail.local

Ubah bahagian SSH seperti berikut:

[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600

3.5.3 Memulakan semula Fail2Ban

Mulakan semula Fail2Ban untuk menerapkan perubahan:

sudo systemctl restart fail2ban

3.5.4 Menyemak Senarai Sekatan

Untuk menyemak IP mana yang disekat:

sudo fail2ban-client status sshd

Ringkasan

Dalam bahagian ini, kami membincangkan peningkatan keselamatan SSH yang penting, termasuk:

  • Melumpuhkan log masuk root
  • Melumpuhkan pengesahan kata laluan dan membenarkan pengesahan kunci awam
  • Mengehadkan akses SSH kepada pengguna tertentu
  • Menukar port SSH
  • Menggunakan Fail2Ban untuk menyekat serangan brute force

Dengan melaksanakan langkah-langkah ini, anda dapat mewujudkan persekitaran SSH yang lebih selamat.

4. Konfigurasi SSH Lanjutan

Selepas mengkonfigurasi keselamatan SSH, anda boleh memanfaatkan tetapan lanjutan untuk meningkatkan kebolehgunaan dan keselamatan. Bahagian ini merangkumi pengurusan ssh.socket dalam Ubuntu 22.10 dan versi lebih baru, tunneling SSH (pemajuan port), penetapan pelbagai port SSH, dan mengehadkan akses SSH kepada alamat IP tertentu.

4.1 Menggunakan ssh.socket dalam Ubuntu 22.10 dan Versi Lebih Baru

Mulai Ubuntu 22.10, pengurusan perkhidmatan SSH mungkin beralih dari ssh.service ke ssh.socket. Ini membolehkan SSH dimulakan secara dinamik apabila permintaan sambungan diterima, mengurangkan penggunaan sumber.

4.1.1 Menyemak Status ssh.socket

Untuk menyemak sama ada ssh.socket diaktifkan, jalankan:

sudo systemctl status ssh.socket

Contoh output (jika diaktifkan):

● ssh.socket - OpenSSH Server Socket
   Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Fri 2025-02-28 12:00:00 UTC

4.1.2 Mengaktifkan atau Menyahaktifkan ssh.socket

Jika ssh.socket dinyahaktifkan, aktifkan dengan:

sudo systemctl enable --now ssh.socket

Untuk kembali ke ssh.service tradisional, nyahaktifkan ssh.socket dan aktifkan ssh.service sebaliknya:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service

4.2 Tunneling SSH (Pemajuan Port)

Tunneling SSH membolehkan penghantaran data yang selamat antara pelayan jauh dan PC tempatan, mengelak rangkaian luaran.

4.2.1 Pemajuan Port Tempatan

Berguna untuk mengakses pangkalan data atau pelayan web jauh dengan selamat.
Contoh: Menyambung ke pelayan MySQL jauh (port 3306) dari PC tempatan anda

ssh -L 3306:localhost:3306 username@server-ip-address

4.2.2 Pemajuan Port Jauh

Mendedahkan perkhidmatan tempatan kepada pelayan jauh melalui SSH.
Contoh: Memajukan pelayan web tempatan (port 80) ke port 8080 pada pelayan jauh

ssh -R 8080:localhost:80 username@server-ip-address

4.2.3 Pemajuan Port Dinamik

Menukar SSH menjadi proksi SOCKS untuk melayari web secara awanama.
Contoh: Membuat proksi SOCKS pada port tempatan 1080

ssh -D 1080 username@server-ip-address

4.3 Mendengar pada Pelbagai Port SSH

Secara lalai, SSH mendengar pada satu port (port 22). Menetapkan pelbagai port membolehkan fleksibiliti akses.

4.3.1 Langkah-langkah Konfigurasi

  1. Edit fail konfigurasi SSH.
    sudo nano /etc/ssh/sshd_config
    
  1. Tambah beberapa entri port.
    Port 22
    Port 2200
    
  1. Mulakan semula SSH.
    sudo systemctl restart ssh
    
  1. Benarkan port baru dalam firewall.
    sudo ufw allow 2200/tcp
    

4.4 Menghadkan Akses SSH kepada Alamat IP Tertentu

Untuk meningkatkan keselamatan, anda boleh hadkan akses SSH kepada alamat IP tertentu.

4.4.1 Mengkonfigurasi /etc/hosts.allow

Benarkan akses SSH hanya dari alamat IP tertentu dengan mengedit:

sudo nano /etc/hosts.allow

Tambahkan baris berikut (gantikan 192.168.1.100 dengan alamat IP yang dibenarkan):

sshd: 192.168.1.100

4.4.2 Mengkonfigurasi /etc/hosts.deny

Untuk menyekat semua IP lain secara lalai:

sudo nano /etc/hosts.deny
sshd: ALL

Ini memastikan bahawa hanya IP yang disenaraikan dalam hosts.allow boleh mengakses SSH.

Ringkasan

Bahagian ini meliputi tetapan SSH lanjutan, termasuk:

  • Mengurus ssh.socket dalam Ubuntu 22.10 dan versi kemudian
  • Menggunakan terowongan SSH (penerusan port) untuk sambungan selamat
  • Mendengar pada pelbagai port SSH
  • Menghadkan akses SSH kepada IP tertentu

Menerapkan tetapan ini meningkatkan keselamatan dan kebolehgunaan SSH.

5. Penyelesaian Masalah SSH

Walaupun dengan konfigurasi yang betul, masalah SSH mungkin timbul. Bahagian ini menyediakan penyelesaian kepada masalah SSH biasa.

5.1 Tidak Berjaya Bersambung ke SSH

Jika anda mendapat ralat Connection refused atau masa tamat, periksa yang berikut.

5.1.1 Perkhidmatan SSH Tidak Berjalan

Sahkan status perkhidmatan SSH:

sudo systemctl status ssh

Penyelesaian:

  • Jika Active: inactive (dead) atau failed , mulakan semula SSH.
    sudo systemctl restart ssh
    
  • Benarkan SSH bermula secara automatik.
    sudo systemctl enable ssh
    

5.1.2 Firewall Menyekat SSH

Pastikan SSH dibenarkan melalui UFW:

sudo ufw status

Penyelesaian: Jika SSH tidak dibenarkan:

sudo ufw allow 22/tcp

Jika menggunakan port tersuai:

sudo ufw allow 2200/tcp

5.2 Ralat Pengesahan

Jika SSH menolak percubaan log masuk, periksa yang berikut:

5.2.1 Nama Pengguna atau Kata Laluan Tidak Betul

Pastikan anda menggunakan nama pengguna yang betul:

ssh username@server-ip-address

5.2.2 Masalah Pengesahan Kunci Awam

Sahkan bahawa kunci awam anda disimpan dengan betul dalam ~/.ssh/authorized_keys.

cat ~/.ssh/authorized_keys

5.2.3 Kebenaran Tidak Betul

Pastikan direktori SSH dan fail mempunyai kebenaran yang betul:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Ringkasan

Bahagian ini meliputi masalah SSH biasa dan penyelesaiannya, termasuk:

  • Memeriksa jika SSH berjalan
  • Memastikan firewall tidak menyekat SSH
  • Memperbaiki masalah pengesahan

Gunakan langkah penyelesaian masalah ini untuk menyelesaikan masalah sambungan SSH dengan cepat.

6. FAQ (Soalan Lazim)

Bahagian ini menangani soalan-soalan berkaitan SSH yang biasa dan penyelesaian untuk meningkatkan pengalaman SSH anda sambil mengekalkan keselamatan.

6.1 Bagaimana Mencegah Pemutusan Sambungan SSH?

Jika sambungan SSH terputus selepas tempoh tidak aktif, cuba tetapan berikut.

6.1.1 Konfigurasi Sisi Pelayan

Edit /etc/ssh/sshd_config dan tambahkan:

ClientAliveInterval 60
ClientAliveCountMax 3

Mulakan semula SSH untuk menerapkan perubahan:

sudo systemctl restart ssh

6.1.2 Konfigurasi Sisi Klien

Ubah suai fail konfigurasi SSH tempatan ~/.ssh/config:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

6.2 Apa yang Perlu Dilakukan Jika Saya Lupa Kata Laluan SSH Saya?

6.2.1 Jika Anda Mempunyai Akses Fizikal kepada Pelayan

  1. Boot ke mod pemulihan melalui menu GRUB.
  2. Set semula kata laluan dengan arahan berikut:
    passwd username
    
  1. Mulakan semula sistem.

6.2.2 Jika Anda Tidak Boleh Mengakses Pelayan Secara Fizikal (contohnya, Cloud VPS)

  • Gunakan ciri konsol penyedia awan untuk mengakses pelayan.
  • Tetapkan pengesahan kunci SSH bukannya bergantung pada kata laluan.

6.3 Bagaimana Menggunakan SSH pada Windows?

6.3.1 Menggunakan PowerShell

Windows 10 dan versi kemudian termasuk klien SSH terbina. Buka PowerShell dan jalankan:

ssh username@server-ip-address

6.3.2 Menggunakan PuTTY

  1. Muat turun dan pasang PuTTY .
  2. Masukkan IP pelayan dalam Host Name (or IP address) .
  3. Pilih SSH sebagai jenis sambungan dan klik Open .
  4. Log masuk dengan nama pengguna dan kata laluan anda.

6.4 Bagaimana Menyediakan SSH dalam Ubuntu WSL (Windows Subsystem for Linux)?

Untuk mengaktifkan SSH pada WSL, ikuti langkah-langkah berikut.

6.4.1 Memasang Pelayan SSH

sudo apt update && sudo apt install openssh-server

6.4.2 Menyediakan SSH

Edit /etc/ssh/sshd_config dan benarkan pengesahan kata laluan:

PasswordAuthentication yes

Memandangkan WSL tidak menggunakan systemd secara lalai, mulakan SSH secara manual:

sudo service ssh start

6.5 Langkah Keselamatan Tambahan Apa yang Perlu Saya Ambil?

6.5.1 Memasang Fail2Ban

Cegah serangan brute-force dengan memasang Fail2Ban:

sudo apt install fail2ban -y

Edit fail konfigurasi /etc/fail2ban/jail.local :

[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600

Mulakan semula Fail2Ban:

sudo systemctl restart fail2ban

6.5.2 Menukar Port SSH

Ubah /etc/ssh/sshd_config untuk menukar port SSH lalai:

Port 2200

Mulakan semula SSH dan kemas kini tetapan firewall:

sudo ufw allow 2200/tcp

6.6 Bagaimana Memantau Log SSH secara Masa Nyata?

Untuk melihat log SSH secara masa nyata, gunakan:

sudo journalctl -u ssh -f

Untuk memeriksa log lama:

sudo cat /var/log/auth.log | grep ssh

6.7 Bagaimana Menjadikan SSH Lebih Mudah Digunakan?

6.7.1 Menggunakan .ssh/config untuk Log Masuk Mudah

Simpan sambungan SSH yang kerap digunakan dalam ~/.ssh/config :

Host myserver
    HostName 192.168.1.100
    User user
    Port 2200
    IdentityFile ~/.ssh/id_rsa

Kini anda boleh sambung dengan:

ssh myserver

6.7.2 Menggunakan ssh-agent untuk Mengelakkan Masukan Kata Laluan Berulang

Jalankan:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

Ini membolehkan sambungan SSH tanpa memasukkan frasa laluan setiap kali.

Ringkasan

Bahagian ini memberikan jawapan kepada soalan-soalan umum berkaitan SSH, meliputi:

  • Mencegah masa tamat SSH
  • Memulihkan kata laluan yang terlupa
  • Menggunakan SSH pada Windows dan WSL
  • Menerapkan langkah keselamatan tambahan
  • Memantau log SSH
  • Membuat penggunaan SSH lebih mudah

Dengan mengikuti tip ini, anda dapat mewujudkan persekitaran SSH yang selamat dan berkesan untuk pengurusan pelayan jauh.

Artikel Berkaitan

Related

1. Pengenalan Dengan menggunakan SSH pada Ubuntu, anda boleh mengakses dan mengurus pelayan atau PC anda secara selamat […]

侍エンジニア塾