SSD Nodes Learn
Panduan Matt ConnorOleh Matt Connor · Dikemas kini 2026-07-24

cara kukuhkan SSH pada VPS anda

Lindungi VPS anda dengan menukar log masuk kepada kunci sahaja, melumpuhkan akses root, serta menggunakan Fail2ban untuk menyekat serangan brute force.

Mengapa SSH adalah perkara pertama untuk diperkukuh

SSH adalah cara anda mengawal pelayan anda, menjadikannya kunci utama yang dicuba oleh setiap penyerang. Sebaik sahaja VPS dalam talian, pengimbas akan mula meneka nama pengguna dan kata laluan pada port 22. Anda boleh melihat aktiviti ini dalam log anda dalam masa beberapa minit. Memperkukuh SSH bermaksud menghapuskan perkara yang boleh mereka teka: matikan log masuk kata laluan sepenuhnya, matikan log masuk root, dan hanya benarkan kunci kriptografi. Setelah anda melakukannya, cubaan meneka yang berterusan tidak akan berjaya kerana tiada kata laluan untuk dicari.

Ini mengandaikan SSH anda sudah berfungsi. Jika anda boleh log masuk, anda boleh memperkukuhnya. Lakukan langkah-langkah mengikut urutan dan biarkan sesi semasa anda terbuka sehingga sesi baharu berjaya, supaya kesilapan tidak mengunci akses anda.

Langkah 1: Pastikan pengesahan kunci berfungsi terlebih dahulu

Pengesahan kunci menggantikan kata laluan dengan pasangan kunci: kunci peribadi yang kekal pada komputer anda dan kunci awam yang diletakkan pada pelayan. Pelayan akan mengesahkan anda memiliki kunci peribadi tanpa kunci tersebut meninggalkan mesin anda. Sebelum anda menyahaktifkan kata laluan, sahkan kunci berfungsi supaya anda tidak terkunci daripada sistem.

Pada komputer anda, cipta kunci jika anda belum memilikinya:

ssh-keygen -t ed25519

Salin bahagian awam ke pelayan:

ssh-copy-id user@your-server

Kemudian buka sesi SSH baharu. Jika anda boleh masuk tanpa diminta kata laluan, kunci anda berfungsi dan anda selamat untuk menutup fungsi kata laluan. Jika anda baru mengenali kunci, atau menggunakan lebih daripada satu komputer, asas pengurusan kunci SSH menerangkan model penuh: satu kunci bagi setiap peranti, kebenaran yang diperlukan oleh sshd, dan cara membatalkan kunci jika komputer riba hilang.

Step 2: Perkukuh sshd dengan fail drop-in

Jangan edit /etc/ssh/sshd_config secara terus. Ubuntu 24.04 membaca fail drop-in dari /etc/ssh/sshd_config.d/. Fail kecil di sana adalah lebih kemas, tidak hilang semasa kemas kini pakej, dan mudah dipadam jika berlaku ralat. Nama fail adalah penting: sshd akan mengekalkan nilai pertama yang dibaca untuk setiap tetapan, dan imej awan Ubuntu menyediakan 50-cloud-init.conf dengan PasswordAuthentication yes di dalam direktori ini. Namakan fail anda 00- supaya ia disusun sebelum fail tersebut dan diutamakan; fail 99- akan kalah tanpa sebarang amaran. Cipta fail tersebut:

sudo nano /etc/ssh/sshd_config.d/00-hardening.conf

Masukkan ini ke dalam:

# Key-only login: no passwords to guess.
PasswordAuthentication no
KbdInteractiveAuthentication no

# No direct root login. Log in as your user, then use sudo.
PermitRootLogin no

Setiap baris menutup satu ruang akses. PasswordAuthentication no adalah yang paling penting: dengan menutup kata laluan, serangan brute-force tidak mempunyai sasaran. KbdInteractiveAuthentication no menutup laluan kedua gaya kata laluan. PermitRootLogin no bermaksud penyerang mesti mengetahui nama pengguna anda dan memiliki kunci anda, bukan sekadar menyasarkan satu-satunya akaun yang wujud pada setiap sistem, iaitu root.

Step 3: Uji konfigurasi, kemudian muat semula

Semak konfigurasi untuk ralat sebelum ia dilaksanakan, supaya kesilapan taip tidak merosakkan perkhidmatan:

sudo sshd -t

Jika tiada output dipaparkan, konfigurasi adalah sah. Muat semula SSH:

sudo systemctl reload ssh

Kemudian semak tetapan yang digunakan oleh sshd, supaya anda dapat mengesan jika terdapat fail tambahan yang bertindih dengan fail lain:

sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'

Kedua-duanya harus memaparkan no. Sekarang, tanpa menutup sesi semasa anda, buka sesi baharu daripada terminal lain. Jika anda berjaya log masuk menggunakan kunci anda, proses selesai. Jika terdapat ralat, sesi pertama anda masih terbuka untuk membetulkannya. Pertindihan ini adalah jaring keselamatan, jadi jangan sesekali melangkau langkah ini.

Langkah 4: Port bukan piawai pilihan

Menukar port SSH daripada 22 kepada sesuatu seperti 2222 tidak meningkatkan keselamatan secara nyata, kerana penyerang yang nekad akan mengimbas semua port. Tindakan ini hanya mengurangkan gangguan log, memandangkan kebanyakan pengimbas automatik hanya mencuba port 22. Jika anda mahu, tambahkan Port 2222 ke dalam fail konfigurasi anda, benarkan port baharu dalam firewall terlebih dahulu, kemudian jalankan sudo systemctl daemon-reload && sudo systemctl restart ssh.socket dan sambung menggunakan ssh -p 2222. Pada Ubuntu 24.04, ssh.socket menguruskan port yang sedang mendengar, jadi reload ssh biasa akan mengekalkan sshd pada port 22; anda perlu memulakan semula socket untuk menggunakan port baharu tersebut. Anggap ini sebagai langkah pengemasan, bukan perlindungan.

Langkah 5: Tambah lapisan pertahanan tambahan

Kunci SSH yang diperkukuh adalah asas, dan dua lagi lapisan tambahan dibina di atasnya.

Fail2ban memantau log anda dan menyekat alamat yang gagal berulang kali, yang mengurangkan gangguan pengimbas dan menghalau mereka lebih awal. Ia berfungsi secara semula jadi dengan pengesahan kunci sahaja: lihat Fail2ban pada Ubuntu untuk menghentikan serangan SSH.

Lebih kukuh lagi adalah dengan mengasingkan SSH sepenuhnya daripada internet awam. Jika anda meletakkan SSH di belakang VPN WireGuard dan menyekat port 22 pada firewall untuk terowong tersebut, tiada sesiapa di luar VPN dapat mencapainya, dan serangan tekaan brute-force tidak lagi menjadi mustahil berbanding sekadar sukar. Semua ini mengandaikan firewall jenis default-deny digunakan, seperti UFW yang ditetapkan pada VPS.

SSH hanyalah satu bahagian daripada senarai semak yang lebih besar: 10 minit pertama pada VPS baharu menyusun langkah-langkah mengikut urutan, dan kemas kini keselamatan automatik pada Ubuntu memastikan pelayan sentiasa dikemas kini selepas itu.

FAQ

Bagaimanakah cara untuk melumpuhkan log masuk kata laluan bagi SSH pada Ubuntu 24.04?

Buat satu fail drop-in pada /etc/ssh/sshd_config.d/00-hardening.conf (awalan 00 memastikan ia disusun sebelum 50-cloud-init.conf, yang mana PasswordAuthentication yes akan menang jika tidak, kerana sshd mengekalkan nilai pertama yang dibaca) yang mengandungi PasswordAuthentication no dan KbdInteractiveAuthentication no, jalankan sudo sshd -t untuk menyemaknya, kemudian sudo systemctl reload ssh. Sahkan log masuk kunci berfungsi dalam sesi baharu sebelum anda bergantung kepadanya. Mengedit fail drop-in berbanding sshd_config akan kekal selamat semasa naik taraf pakej dan mudah untuk dibatalkan.

Patutkah saya melumpuhkan log masuk root melalui SSH?

Ya. Tetapkan PermitRootLogin no supaya tiada sesiapa boleh log masuk secara terus sebagai root. Log masuk sebagai pengguna biasa anda dan gunakan sudo untuk tugasan admin. Root wujud pada setiap sistem Linux, jadi membiarkannya boleh dicapai memberikan nama pengguna yang diketahui kepada penyerang untuk disasarkan. Melumpuhkannya bermaksud mereka mesti tahu nama akaun anda dan memegang kunci anda.

Adakah menukar port SSH menjadikan pelayan saya lebih selamat?

Tidak secara bermakna. Berpindah dari port 22 menyembunyikan anda daripada pengimbas malas yang hanya memeriksa port 22, yang mengurangkan gangguan log, tetapi penyerang sebenar akan mengimbas setiap port dan tetap menemuinya. Pengesahan kunci sahaja adalah apa yang sebenarnya menghalang pencerobohan. Jika anda menukar port, buka port baharu dalam firewall terlebih dahulu, kemudian jalankan sudo systemctl daemon-reload && sudo systemctl restart ssh.socket; pada Ubuntu 24.04, socket memiliki pendengar (listener), dan reload biasa akan mengekalkan sshd pada port 22.

Adakah saya memerlukan Fail2ban jika saya menggunakan kunci SSH?

Ia adalah pilihan tetapi masih berguna. Dengan pengesahan kunci sahaja, tekaan kata laluan tidak akan berjaya, jadi Fail2ban bukanlah perkara yang menghalang penyerang. Ia mengehadkan kadar kegagalan berulang daripada satu alamat, yang mengurangkan gangguan pengimbas daripada log anda dan menghalau pesalah berulang dengan awal; serangan perlahan dan teragih tetap berada di bawah ambang sekatan (ban threshold) nya. Jalankan ia bersama pengesahan kunci, dan sebaiknya letakkan SSH di belakang VPN.

Bagaimanakah cara untuk memulihkan jika saya terkunci daripada SSH?

Gunakan konsol web pembekal anda, yang mengakses pelayan melalui sambungan serial atau VNC yang tidak melalui SSH. Dari sana anda boleh log masuk, membaiki fail drop-in sshd, dan memuat semula perkhidmatan. Inilah sebabnya anda perlu menguji konfigurasi SSH baharu dalam terminal kedua sebelum menutup sesi pertama anda, dan mengapa pengesahan kunci sepatutnya sudah berfungsi sebelum anda mematikan kata laluan.