SSH կապի սխալներ․ գտեք խափանման պատճառը
Երբ Ubuntu VPS-ի SSH մուտքը չի աշխատում, ստուգման ուղղությունն ընտրեք սխալի հաղորդագրությամբ։ Այս ուղեցույցը տարանջատում է ցանցի, ծառայության, authentication-ի և սերվերի ինքնության խնդիրները՝ պահպանելով գործող մուտքը։
VPSuntu · Թարմացվել է · Ընթերցում՝ մոտ 5 րոպե
Ուղեցույցի բովանդակությունը
Գրանցեք մեկ ձախողում և պահեք աշխատող մուտքը
Գործող SSH սեսիան բաց թողեք և գտեք մատակարարի recovery console-ը։ Կլիենտի հրամանները կատարվում են ձեր Linux, macOS կամ WSL համակարգչում։ Սերվերինը՝ առկա մուտքով կամ authenticated recovery console-ով։ Սերվերի հրամանները մի տեղադրեք ձեր տեղային տերմինալում։
203.0.113.10-ը փաստաթղթային հասցե է․ փոխարինեք սերվերինով։ Փոխեք նաև ubuntu օգտատիրոջը, պորտ 22-ը և private-key ուղին՝ ըստ ձեր մուտքի։ Նախ տպեք կլիենտի հաշվարկված պարամետրերը, հետո կատարեք մեկ նոր փորձ։
ssh -G -p 22 -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10
ssh -v -S none -o ConnectTimeout=10 -o StrictHostKeyChecking=ask -p 22 -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10Ստուգեք hostname, user, port, identityfile և proxy կարգավորումները։ Երկրորդ հրամանն այս փորձի համար անջատում է connection sharing-ը։ Գրանցեք ժամը և վերջնական սխալը։ Նոր host key-ը ստուգեք ստորև ինքնության բաժնով։ Debug-ը փոխանցելուց առաջ ծածկեք usernames-ը, հասցեներն ու paths-ը․ private key երբեք մի փոխանցեք։
Ընտրեք սխալին համապատասխան ստուգումը
Փոքր էկրանին բոլոր սյունակները տեսնելու համար աղյուսակը ոլորեք հորիզոնական։
| Հաղորդագրություն կամ փուլ | Ինչ է ցույց տալիս | Հաջորդ ստուգում |
|---|---|---|
| Connection timed out՝ մինչև կապի հաստատումը | TCP կապը չի ավարտվել | Հասցե, routing, firewalls և provider state |
| Connection refused | Այդ հասցեից ու պորտից ակտիվ մերժում | Սպասվող պորտ, listener և մերժման կանոններ |
| Permission denied (publickey) | SSH-ը հասել է authentication-ին, բայց բանալին չի ընդունվել | Username, առաջարկված բանալի և server policy |
| REMOTE HOST IDENTIFICATION HAS CHANGED | Ներկայացված host identity-ն տարբերվում է պահվածից | Վստահելի host-key ստուգում՝ մինչև շարունակելը |
Այս դիտարկումները նեղացնում են պատճառների շրջանակը, բայց մեկ պատճառ չեն ապացուցում։ Եթե timeout-ից առաջ debug-ում արդեն կա Connection established, ուսումնասիրեք SSH handshake-ն ու server logs-ը՝ բոլոր փաթեթների արգելափակում ենթադրելու փոխարեն։
Timeout․ հետևեք նախատեսված ցանցային ուղուն
ssh -v-ում հասցեն համեմատեք մատակարարի պանելի ընթացիկ հասցեի հետ։ Հին DNS-ը կամ այլ IPv6 destination-ը կարող է փորձն այլ տեղ ուղարկել։ Պարզեք՝ այս VPS-ին պետք է public IP, VPN, թե jump host։
Համոզվեք, որ ինստանսն աշխատում է և ունի public routing։ Մատակարարի firewall-ում ստուգեք իրական SSH պորտն ու ձեր ընթացիկ public source IP-ն։ Տան հասցեն կարող է փոխվել, մինչ /32 allow կանոնը մնում է հինը։ Կոնսոլով ստուգեք նաև guest firewall-ը։
Oracle Cloud-ում կարևոր են security lists-ը, NSGs-ը, routing-ը և guest firewall-ը։ Պահպանեք իմիջի սկզբնական կանոնները․ UFW տեղադրելն ու iptables մաքրելը ախտորոշման քայլեր չեն։ Ցանցի կառուցվածքը բացատրված է Oracle Ubuntu-ի կարգավորման ուղեցույցում։ Միայն անհաջող ping-ը SSH-ի անհասանելիություն չի ապացուցում։
Refused․ ուսումնասիրեք լսող ծառայությունը
Մերժումը չի հաստատում, որ հասցեն ձեր սպասվող VPS-ն է։ Ճշտեք ինքնությունն ու պորտը, ապա սերվերում առկա մուտքով կամ recovery console-ով կատարեք այս read-only ստուգումները։
systemctl status ssh.service ssh.socket --no-pager
sudo ss -lntp
sudo /usr/sbin/sshd -t
sudo journalctl -u ssh.service -u ssh.socket --since '15 minutes ago' --no-pagerՓնտրեք listener-ը սպասվող պորտի և հասցեի վրա և logs-ը համադրեք փորձի ժամին։ Ubuntu-ն կարող է օգտագործել socket activation․ ոչ ակտիվ ssh.service-ը չի նշանակում անհասանելի SSH, եթե ssh.socket-ը լսում է։
sshd -t-ը ստուգում է configuration-ն ու host keys-ը՝ daemon-ը չգործարկելով։ Լուռ հաջողությունը չի հաստատում ցանցային հասանելիությունը։ Սխալի դեպքում մինչև reload-ը գտեք կոնկրետ ֆայլը կամ պարամետրը․ կուրորեն restart մի արեք։
Public key-ի մերժում․ ստուգեք հաշիվն ու առաջարկված բանալին
Օգտագործեք մատակարարի սկզբնական հաշիվը կամ ձեր ստեղծած ադմինիստրատորին, ոչ ենթադրված username։ Կլիենտի debug-ում գտեք առաջարկված fingerprint-ը։ Agent-ի ավելորդ բանալիները նվազեցնելու համար տեղային համակարգչում կրկնեք՝
ssh -v -S none -o IdentitiesOnly=yes -o StrictHostKeyChecking=ask -p 22 -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10Կարգավորված IdentityFile-երը կարող են դեռ կիրառվել․ ստուգեք ssh -G-ը։ Եթե private key-ը չի կարդացվում կամ թույլտվությունները չափազանց լայն են, նախ ուղղեք այդ տեղային ֆայլը՝ մինչև սերվերը փոխելը։
Սերվերում ստուգեք նպատակային հաշիվն ու authorized public keys-ը։ Օրինակը ենթադրում է /home/ubuntu․ փոխարինեք getent-ի ցույց տված home-ով։
getent passwd ubuntu
sudo ls -ld /home/ubuntu /home/ubuntu/.ssh /home/ubuntu/.ssh/authorized_keys
sudo ssh-keygen -lf /home/ubuntu/.ssh/authorized_keysՀամեմատեք authorized և offered fingerprints-ը։ Journal-ում ստուգեք ownership, permissions և account-policy սխալները։ Ոչ ստանդարտ ուղու դեպքում ուսումնասիրեք AuthorizedKeysFile-ը, included snippets-ը և Match կանոնները։ Provider-managed key service-ն էլ կարող է փոխել մեխանիզմը։ Պահպանեք հին authorized keys-ը․ պատճառը թաքցնելու համար StrictModes մի անջատեք և passwords մի միացրեք։
Host identity-ն փոխվել է․ նախ ստուգեք այն
Rebuild-ը կամ IP-ի վերանշանակումը կարող է host key փոխել, բայց անսպասելի փոփոխությունը կարող է նաև սխալ endpoint կամ միջամտություն նշանակել։ Authenticated provider panel-ում հաստատեք instance ID-ն ու պլանավորված rebuild-ը։
Guest-ի վստահելի կոնսոլից կարդացեք կլիենտի ցույց տված ալգորիթմի public host key-ը։ Ed25519-ի օրինակ՝
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256SHA256-ը համեմատեք կլիենտի զգուշացման հետ։ Սա սերվերի բանալին է, ոչ login key-ը կամ provider console gateway-ինը։ Հաստատված փոխարինումից հետո կարող է պետք լինել այդ սերվերի պահված գրառման թարմացում․ նախ backup արեք ֆայլը և պահպանեք այլ գրառումները։ Մի ջնջեք ամբողջ known_hosts-ը և մի շրջանցեք ստուգումը։ Եթե ինքնությունը դեռ անհասկանալի է, դադարեցրեք կապը և ուսումնասիրեք պատճառը։
Կոնկրետ ուղղումը ստուգեք նոր սեսիայով
Ուղղեք հայտնաբերված հասցեն, օգտատիրոջը, բանալին, նեղ ցանցային կանոնը կամ configuration-ի սխալը։ Սերվերը փոխելիս պահեք անկախ մուտքի ուղի և մինչև կիրառելը ստուգեք SSH configuration-ը։ Նոր պորտը կարող է նաև socket activation կարգավորում պահանջել, ոչ միայն service restart։
Կրկնեք սկզբնական փորձը՝ connection sharing-ն անջատած։ Նոր մուտքը պետք է հասնի սպասվող հաշվին և անհրաժեշտ sudo-ն աշխատի։ Հին բաց սեսիան այդ ստուգումը չէ։ Գրանցեք խափանումն ու փոփոխությունը, հետո վերադարձեք Ubuntu VPS-ի տեղակայման ուղեցույցին։
Հաճախ տրվող հարցեր
SSH-ը շտկելու համար Ubuntu-ն վերատեղադրե՞լ։
Նախ ախտորոշեք։ Սխալ հասցեն, username-ը կամ key-ը OS reinstall չեն պահանջում, իսկ reinstall-ը կարող է տվյալներ ոչնչացնել։ Եթե մուտք այլևս չկա, օգտագործեք մատակարարի recovery գործընթացը։
Աշխատող կոնսոլը ապացուցո՞ւմ է, որ SSH-ն էլ պետք է աշխատի։
Ոչ։ Console և public SSH մուտքերը տարբեր ուղիներ ունեն։ Guest listener-ը, հաշվի authentication-ն ու ցանցի կանոնները պետք է թույլ տան SSH կապը։