SSD Nodes Learn Hosting plans →
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-08-31

Jinsi ya kuimarisha usalama wa SSH kwenye VPS

Linda seva yako ya VPS kwa kulemaza uingiaji wa root na nywila. Jifunze kutumia funguo za SSH, Fail2ban, na VPN ili kuzuia mashambulizi ya brute force kwenye port 22.

Kwa nini SSH ndiyo kitu cha kwanza kukifanyia hardening

SSH ndiyo njia unayotumia kudhibiti seva yako, jambo linaloifanya kuwa kufuli ambalo kila mshambuliaji hujaribu kulivunja kwanza. Mara tu VPS inapokuwa mtandaoni, skana huanza kukisia majina ya watumiaji na nywila kwenye port 22. Unaweza kuona jambo hili likitokea kwenye log zako ndani ya dakika chache. Hardening ya SSH inahusu kuondoa vitu wanavyoweza kukisia: zima kabisa uingiaji kwa nywila, zima uingiaji wa root, na ruhusu funguo za cryptographic pekee. Ukishafanya hivyo, kukisia kwao mara kwa mara hakutaweza kufanikiwa, kwa sababu hakuna nywila ya kupatikana.

Hii inachukulia kuwa tayari una SSH inayofanya kazi. Ikiwa unaweza kuingia, unaweza kuifanyia hardening. Fuata hatua hizi kwa mpangilio na uweke session yako ya sasa ikiwa wazi hadi pale mpya itakapofanya kazi, ili makosa yoyote yasikufungie nje.

Hatua ya 1: Hakikisha uthibitishaji kwa kutumia key unafanya kazi kwanza

Uthibitishaji kwa kutumia key huchukua nafasi ya nenosiri kwa jozi ya key: private key inayobaki kwenye kompyuta yako na public key unayoiweka kwenye seva. Seva huthibitisha kuwa unamiliki private key hiyo bila key yenyewe kuondoka kwenye mashine yako. Kabla ya kuzima matumizi ya nenosiri, hakikisha key zinafanya kazi, la sivyo utajifungia nje ya seva.

Kwenye kompyuta yako mwenyewe, tengeneza key ikiwa huna moja:

ssh-keygen -t ed25519

Nakili sehemu ya public kwenye seva:

ssh-copy-id user@your-server

Kisha fungua session mpya ya SSH. Ikiwa itakuingiza bila kukuuliza nenosiri, key yako inafanya kazi na uko salama kuzima nenosiri. Ikiwa itakuzuia kwa Permission denied (publickey), error hiyo moja huficha makosa matano tofauti, na matokeo ya ssh -v yatakuambia ni kosa lipi unalo kabla ya kubadilisha kitu kingine chochote. Ikiwa key ni ngeni kwako, au unatumia zaidi ya kompyuta moja, misingi ya usimamizi wa SSH key inaelezea mfumo mzima: key moja kwa kila kifaa, ruhusa ambazo sshd inahitaji, na jinsi ya kufuta key pale laptop inapopotea.

Hatua ya 2: Imarisha sshd kwa kutumia faili la ziada (drop-in file)

Usihariri /etc/ssh/sshd_config moja kwa moja. Ubuntu 24.04 husoma faili za ziada kutoka /etc/ssh/sshd_config.d/, na faili dogo hapo ni safi zaidi, hudumu baada ya masasisho ya vifurushi, na ni rahisi kuliondoa ikiwa kitu kitaenda vibaya. Jina ni muhimu: sshd huhifadhi thamani ya kwanza inayoisoma kwa kila mpangilio, na picha za wingu za Ubuntu huja na 50-cloud-init.conf ikiwa na PasswordAuthentication yes katika saraka hii. Lipe faili lako jina 00- ili lipangwe kabla ya lile lingine na lishinde; faili la 99- litashindwa kimya kimya. Unda faili moja:

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

Weka yafuatayo ndani yake:

# 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 hufunga mlango. PasswordAuthentication no ndilo muhimu zaidi: nywila zikiwa zimezimwa, shambulio la brute-force halina kitu cha kushambulia. KbdInteractiveAuthentication no hufunga njia nyingine ya aina ya nywila. PermitRootLogin no inamaanisha mshambuliaji lazima ajue jina lako la mtumiaji na awe na ufunguo wako, badala ya kulenga akaunti moja tu, root, ambayo ipo kwenye kila seva.

Hatua ya 3: Jaribu usanidi, kisha uupakie upya

Kagua usanidi ili kuona kama kuna makosa kabla ya kuutumia, ili kosa la uchapaji lisivuruge huduma:

sudo sshd -t

sudo sshd -t

Ikiwa haitoi ujumbe wowote, usanidi ni sahihi. Pakia upya SSH:

sudo systemctl reload ssh

sudo systemctl reload sshd

Kisha kagua mipangilio ambayo sshd inatumia kwa sasa, ili uone kama kuna faili ya ziada iliyobatilisha mipangilio yako:

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

sshd -T | grep -E 'passwordauthentication|pubkeyauthentication'

Yote mawili yanapaswa kusema no. Sasa, bila kufunga kikao chako cha sasa, fungua kikao kipya kabisa kutoka terminal nyingine. Ikiwa inakuingiza kwa kutumia key yako, umemaliza. Ikiwa kuna jambo lolote si sahihi, kikao chako cha kwanza bado kiko wazi ili uweze kurekebisha. Mwingiliano huu ni wavu wa usalama, kwa hivyo usiruke hatua hii kamwe.

Hatua ya 4: Port isiyo ya kawaida (hiari)

Kuhamisha SSH kutoka port 22 kwenda port nyingine kama 2222 hakuongezi usalama kwa namna yoyote ya maana, kwa sababu mshambuliaji mwenye nia atachanganua (scan) port zote. Kile inachofanya ni kupunguza kelele 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 endesha 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, kwa hivyo reload ssh ya kawaida huiacha sshd kwenye port 22; kuanzisha upya socket ndiko kunakochukua port mpya. Ichukulie hii kama hatua ya kupanga mambo vizuri, siyo kama ulinzi.

Hatua ya 5: Weka tabaka za ulinzi zaidi

Funguo za SSH zilizolindwa ndio msingi, na kuna tabaka nyingine mbili juu yake.

Fail2ban hufuatilia logi zako na kupiga marufuku anwani zinazoshindwa mara kwa mara, jambo linalopunguza kelele za skana na kuwafukuza mapema. Inafanya kazi vizuri na uthibitishaji wa funguo pekee: tazama Fail2ban kwenye Ubuntu ili kuzuia mashambulizi ya SSH.

Njia bora zaidi ni kuweka SSH mbali kabisa na mtandao wa umma. Ikiwa utaweka SSH nyuma ya WireGuard VPN na kufunga port 22 kwenye firewall kwa ajili ya tunnel hiyo, hakuna mtu aliye nje ya VPN anayeweza kuifikia, na majaribio ya brute-force yanakuwa hayawezekani badala ya kuwa magumu tu. Yote haya yanategemea firewall ya default-deny iliyo chini yake, ambayo ni UFW iliyosanidiwa kwenye VPS.

SSH ni mstari mmoja tu katika orodha kubwa ya ukaguzi: dakika 10 za kwanza kwenye VPS mpya hupanga hatua hizi kwa utaratibu, na sasisho za usalama za kiotomatiki kwenye Ubuntu huifanya seva kuwa na viraka baadaye. Kufunga mlango hakusaidii huduma zilizopo nyuma yake, kwa hivyo ikiwa VPS hii hiyo inaendesha password vault, ukaguzi wa usalama wa Vaultwarden hushughulikia mambo mawili ambayo uthibitishaji wa funguo hauyagusi: token ya admin na faili lake la backup.

FAQ

Ninawezaje kulemaza kuingia kwa nenosiri kupitia SSH kwenye Ubuntu 24.04?

Tengeneza faili ya ziada (drop-in file) katika /etc/ssh/sshd_config.d/00-hardening.conf (kiambishi 00 huhakikisha faili inasomwa kabla ya 50-cloud-init.conf, ambayo PasswordAuthentication yes yake ingeshinda vinginevyo, kwa sababu sshd hutumia thamani ya kwanza inayoipata) yenye PasswordAuthentication no na KbdInteractiveAuthentication no, kisha endesha sudo sshd -t ili kuhakiki usanidi, na hatimaye sudo systemctl reload ssh. Hakikisha kuwa kuingia kwa kutumia ufunguo (key) kunafanya kazi katika session mpya kabla ya kutegemea njia hiyo. Kuhariri faili ya ziada badala ya sshd_config huhakikisha usanidi haufutwi wakati wa update za kifurushi na ni rahisi kuurejesha katika hali ya awali.

Je, ninapaswa kulemaza kuingia kwa root kupitia SSH?

Ndiyo. Weka PermitRootLogin no ili kuzuia mtu yeyote kuingia moja kwa moja kama root. Ingia kama mtumiaji wa kawaida na utumie sudo kwa kazi za kiutawala. Akaunti ya root ipo katika kila mfumo wa Linux, kwa hivyo kuiacha wazi humpa mshambuliaji jina la mtumiaji linalojulikana. Kuilemaza kunamaanisha mshambuliaji lazima ajue jina la akaunti yako na awe na ufunguo wako.

Je, kubadilisha port ya SSH hufanya seva yangu kuwa salama zaidi?

Si kwa kiasi kikubwa. Kuhama kutoka port 22 hukuficha dhidi ya skana za kawaida zinazochunguza port 22 pekee, jambo linalopunguza kelele kwenye log, lakini mshambuliaji makini atachunguza kila port na kuipata. Uthibitishaji kwa kutumia ufunguo pekee ndio unaozuia uvamizi. Ukibadilisha port, ifungue kwanza kwenye firewall, kisha endesha sudo systemctl daemon-reload && sudo systemctl restart ssh.socket; kwenye Ubuntu 24.04, socket ndiyo inayomiliki listener, na reload ya kawaida haitahamisha sshd kutoka port 22.

Je, ninahitaji Fail2ban ikiwa ninatumia funguo za SSH?

Ni hiari lakini bado ni muhimu. Kwa uthibitishaji wa ufunguo pekee, kubahatisha nenosiri hakuwezi kufanikiwa, kwa hivyo Fail2ban si kizuizi kikuu cha washambuliaji. Hupunguza kasi ya majaribio mengi kutoka anwani moja, jambo linalopunguza kelele za skana kwenye log zako na kuwafukuza washambuliaji wa mara kwa mara; hata hivyo, shambulio la polepole na lililosambazwa linaweza kubaki chini ya kizingiti cha ban. Iendeshe pamoja na uthibitishaji wa ufunguo, na ikiwezekana, iweke SSH nyuma ya VPN.

Ninawezaje kurejesha ufikiaji ikiwa nimejifungia nje ya SSH?

Tumia dashibodi ya wavuti ya mtoa huduma wako, ambayo hufikia seva kupitia muunganisho wa serial au VNC ambao haupiti kwenye SSH. Kutoka hapo unaweza kuingia, kurekebisha faili ya ziada ya sshd, na ku-reload huduma hiyo. Hii ndiyo sababu unapaswa kujaribu usanidi mpya wa SSH katika terminal ya pili kabla ya kufunga session yako ya kwanza, na kwa nini uthibitishaji wa ufunguo unapaswa kuwa tayari unafanya kazi kabla ya kuzima matumizi ya manenosiri.