SSD Nodes Learn
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-07-24

Jinsi ya kuimarisha SSH kwenye VPS yako

Jifunze jinsi ya kuzuia mashambulio kwa kuzima PasswordAuthentication na kuweka SSH keys, Fail2ban na VPN ili kulinda VPS yako dhidi ya skana za port 22.

Kwa nini SSH ni kitu cha kwanza kuimarishwa

SSH ndiyo njia ya kuudhibiti seva yako, jambo linalofanya iwe kama kufuli ambalo kila mshambuliaji anajaribu kwanza. Mara tu VPS inapokuwa mtandaoni, skana huanza kukisia majina ya watumiaji na nywila kwenye port 22. Unaweza kuona tukio hilo kwenye logi zako ndani ya dakika chache. Kuimarisha SSH ni kuondoa vitu ambavyo wanaweza kukisia: zima kabisa kuingia kwa nywila, zima kuingia kwa root, na ruhusu funguo za cryptographic pekee. Ukifanya hivyo, ukisia huo wa mara kwa mara hautaweza kufanikiwa, kwa sababu hakuna nywila ya kupatikana.

Hii inafafanua kuwa tayari una SSH inayofanya kazi. Ikiwa unaweza kuingia, unaweza kuimarisha. Fuata hatua hizi kwa mpangilio na uache session yako ya sasa ikiwa wazi hadi session mpya itakapofanya kazi, ili kosa lisikufunge nje kabisa.

Hatua ya 1: Hakikisha uthibitisho wa funguo (key authentication) unafanya kazi kwanza

Uthibitisho wa funguo unabadilisha nywila kwa kutumia jozi ya funguo: funguo ya siri (private key) inayobaki kwenye kompyuta yako na funguo ya umma (public key) unayoweka kwenye seva. Seva inathibitisha kuwa unamiliki funguo ya siri bila funguo hiyo kutoka kwenye mashine yako. Kabla ya kuzima nywila, hakikisha funguo zinafanya kazi, vinginevyo utajifunga nje ya mfumo.

Kwenye kompyuta yako, tengeneza funguo ikiwa huna:

ssh-keygen -t ed25519

Nakili sehemu ya umma kwenda kwenye seva:

ssh-copy-id user@your-server

Kisha fungua kikao kipya cha SSH. Ikiwa itakuingiza bila kuomba nywila, funguo yako inafanya kazi na unaweza kuzima nywila kwa usalama. Ikiwa funguo ni mpya kwako, au unatumia zaidi ya kompyuta moja, misingi ya usimamizi wa funguo za SSH inaelezea mfumo mzima: funguo moja kwa kila kifaa, ruhusa zinazohitajika na sshd, na jinsi ya kufuta funguo wakati laptop inapopotea.

Hatua ya 2: Imarisha sshd kwa kutumia drop-in file

Usihariri /etc/ssh/sshd_config moja kwa moja. Ubuntu 24.04 husoma drop-in files kutoka /etc/ssh/sshd_config.d/. Kutumia faili ndogo hapo ni njia safi, inabaki baada ya package upgrades, na ni rahisi kuiondoa ikiwa kuna tatizo. Jina la faili ni muhimu: sshd hubaki na thamani ya kwanza inayosoma kwa kila mipangilio, na Ubuntu cloud images huleta 50-cloud-init.conf ikiwa na PasswordAuthentication yes kwenye directory hii. Ipe faili yako jina la 00- ili iwe mbele ya hiyo na ishinde; faili ya 99- itashindwa bila kutoa taarifa. Tengeneza faili:

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

Weka hii ndani ya:

# 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

Kila mstari unafungia mlango. PasswordAuthentication no ni muhimu zaidi: ukiweka passwords off, shambulio la brute-force halitakuwa na kitu cha kushambulia. KbdInteractiveAuthentication no inafunga njia nyingine ya mtindo wa password. PermitRootLogin no inamaanisha mshambuliaji lazima ajue jina lako la mtumiaji na awe na funguo zako, badala ya kulenga akaunti ya root inayopatikana kwenye kila mfumo.

Hatua ya 3: Jaribu usanidi, kisha uweke upya

Kagua usanidi ili kuona makosa kabla ya kuutumia, ili kosa la uandishi lisiharibu huduma:

sudo sshd -t

Ikiwa haitolei matokeo yoyote, usanidi ni sahihi. Weka upya SSH:

sudo systemctl reload ssh

Kisha kagua mipangilio ambayo sshd inaitumia, ili uweze kubaini mabadiliko yaliyopotea kutokana na faili nyingine:

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

Zote zinapaswa kusema no. Sasa, bila kufunga kikao chako cha sasa, fungua kikao kipya kabisa kutoka kwenye terminal nyingine. Ikiwa itakuingiza kwa kutumia funguo (key) yako, umemaliza. Ikiwa kuna hitilafu, kikao chako cha kwanza bado kiko wazi ili kukirekebisha. Mwingiliano huu ni kinga, hivyo usipuuze hatua hii.

Hatua ya 4: Port isiyo ya kawaida (hiari)

Kuhamisha SSH kutoka port 22 kwenda port kama 2222 hakiongezi usalama wa kweli, kwa sababu mshambuliaji aliyeamua atatafuta kwenye port zote. Kitendo hiki hupunguza usumbufu kwenye log, kwa sababu skana nyingi za kiotomatiki hujaribu port 22 pekee. Ikiwa unataka kufanya hivyo, ongeza Port 2222 kwenye faili yako ya drop-in, ruhusu port mpya kwenye firewall kwanza, kisha run sudo systemctl daemon-reload && sudo systemctl restart ssh.socket na uunganishe kwa kutumia ssh -p 2222. Kwenye Ubuntu 24.04, ssh.socket ndiyo inayomiliki port inayosikiliza, hivyo reload ssh pekee itaacha sshd kwenye port 22; kuanzisha upya socket ndiyo itakayochukua port mpya. Ichukulie kama njia ya kupanga mfumo, si kama ulinzi.

Hatua ya 5: Ongeza ulinzi wa ziada

Vifunguo vya SSH vilivyolindwa (Hardened SSH keys) ndio msingi, na kuna tabaka mbili zaidi juu yake.

Fail2ban huchunguza logi zako na kuzuia anwani zinazoshindwa mara kwa mara. Hii inapunguza kelele za skana na kuziondoa mapema. Inafanya kazi vizuri pamoja na uthibitisho wa vifunguo pekee (key-only auth): tazama Fail2ban kwenye Ubuntu ili kusitisha mashambulizi ya SSH.

Njia bora zaidi ni kuweka SSH nje kabisa ya mtandao wa umma. Ukichagua kuweka SSH nyuma ya WireGuard VPN na kufunga port 22 kwa kutumia firewall ili iweze kupatikana kupitia tunnel pekee, hakuna mtu nje ya VPN atakayeweza kuifikia. Hii inafanya mashambulizi ya brute-force yasiweze kufanyika kabisa, badala ya kuwa magumu tu. Hii yote inategemea firewall ya default-deny, kama ilivyo UFW iliyowekwa kwenye VPS.

SSH ni sehemu moja ya orodha kubwa ya mambo ya kufanya: dakika 10 za kwanza kwenye VPS mpya inaonyesha hatua kwa mpangilio, na updates za usalama za kiotomatiki kwenye Ubuntu huendelea kuweka mfumo wako salama baada ya hapo.

FAQ

Je, ninawezaje kuzima login ya password kwa SSH kwenye Ubuntu 24.04?

Tengeneza faili la drop-in kwenye /etc/ssh/sshd_config.d/00-hardening.conf (kiambishi cha 00 kinahakikisha kinasoma kabla ya 50-cloud-init.conf, ambapo PasswordAuthentication yes ingeshinda, kwa sababu sshd hubaki na thamani ya kwanza inayosoma) lenye PasswordAuthentication no na KbdInteractiveAuthentication no, kisha run sudo sshd -t ili kuikagua, na baada ya hapo sudo systemctl reload ssh. Hakikisha login ya key inafanya kazi kwenye session mpya kabla ya kuitegemea. Kuedit drop-in badala ya sshd_config kunahakikisha mipangilio hubaki baada ya package upgrades na ni rahisi kurudisha nyuma.

Je, nianze kuzima root login kupitia SSH?

Ndiyo. Weka PermitRootLogin no ili mtu yeyote ashindwe kuingia moja kwa moja kama root. Ingia kama mtumiaji wako wa kawaida na utumie sudo kwa kazi za admin. Root ipo kwenye kila Linux box, hivyo kuacha iweze kufikiwa kunampa mshambuliaji jina la mtumiaji linalojulikana. Kuzima inamaanisha lazima wajue jina la akaunti yako na wawe na key yako.

Je, kubadilisha SSH port kunafanya server yangu iwe salama zaidi?

Haitoi ulinzi wa kutosha. Kuondoka kwenye port 22 kunakuficha dhidi ya scanners za uvivu ambazo huchunguza port 22 pekee, jambo ambalo hupunguza kelele kwenye logs, lakini mshambuliaji halisi huchunguza port zote na ataipata anyway. Authentication ya key pekee ndiyo inayozuia uingiaji haramu. Ukibadilisha port, fungua port mpya kwenye firewall kwanza, kisha run sudo systemctl daemon-reload && sudo systemctl restart ssh.socket; kwenye Ubuntu 24.04 socket ndiyo inayomiliki listener, na reload ya kawaida itaaacha sshd kwenye port 22.

Je, ninahitaji Fail2ban ikiwa ninatumia SSH keys?

Ni hiari lakini bado ina faida. Kwa authentication ya key pekee, kukisia password hakuwezi kufanikiwa, hivyo Fail2ban siyo inayozuia mashambuzi. Inazuia mfululizo wa makosa kutoka kwenye address moja, jambo ambalo hupunguza kelele za scanners kwenye logs zako na kuondoa wanaovunjia sheria mapema; shambulio la polepole na la kusambaa (distributed) litabaki chini ya kiwango chake cha ban anyway. Irun pamoja na key auth, na kwa upendeleo weka SSH nyuma ya VPN.

Je, nifanye nini nikijifunga nje ya SSH?

Tumia web console ya mtoa huduma wako, ambayo inafikia server kupitia connection ya serial au VNC ambayo haipiti kwenye SSH. Kutoka hapo unaweza kuingia, utatengeneze faili la drop-in la sshd, na ku-reload service. Hii ndiyo sababu ya kufanya majaribio ya SSH config mpya kwenye terminal ya pili kabla ya kufunga session yako ya kwanza, na kwa nini key authentication inapaswa kuwa tayari inafanya kazi kabla ya kuzima passwords.