SSH savienojuma kļūdas: atrodiet cēloni
SSH savienojuma kļūdas novērsiet pēc precīzā kļūdas posma. Vispirms saglabājiet strādājošo sesiju vai atkopšanas konsoli, tad nošķiriet tīkla problēmu, atslēgas noraidījumu un servera identitātes maiņu.
VPSuntu · Atjaunināts · Lasīšana aptuveni 4 min.
Šajā pamācībā
Pierakstiet adresi, kontu un kļūdu
Lokālās komandas paredzētas Bash vidē Linux, macOS vai WSL. Aizstājiet 203.0.113.10, ubuntu, 22. portu un atslēgas ceļu ar savām vērtībām. Servera komandas izpildiet tikai saglabātajā sesijā vai uzticamajā konsolē.
Vispirms nolasiet SSH efektīvos iestatījumus un izveidojiet jaunu savienojumu bez jau atvērtas sesijas koplietošanas.
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.10Pārbaudiet hostname, user, port, identityfile un iespējamo ProxyJump vai ProxyCommand. Saglabājiet pārbaudes laiku un pilnu kļūdas tekstu. Atkļūdošanas izvadē var būt kontu un tīkla informācija; pirms tās nosūtīšanas aizklājiet sensitīvus datus. Privāto atslēgu nesūtiet.
Nosakiet, kurā posmā savienojums apstājas
Mazā ekrānā ritiniet tabulu sāniski, lai redzētu visas kolonnas.
| Paziņojums vai posms | Ko tas norāda |
|---|---|
| Connection timed out pirms Connection established | TCP savienojums nav izveidots; jāpārbauda tīkla ceļš |
| Connection refused | Savienojums tiek aktīvi noraidīts; autentifikācija vēl nav sasniegta |
| Permission denied (publickey) | SSH autentifikācijas posms ir sasniegts, bet atslēga nav pieņemta |
| REMOTE HOST IDENTIFICATION HAS CHANGED | Servera piedāvātā identitāte atšķiras no saglabātās |
| Noildze pēc Connection established | TCP darbojas; jāizpēta SSH saruna un servera žurnāli |
Ne katra noildze nozīmē bloķētu portu. Precīzs pēdējais veiksmīgais posms palīdz izvēlēties pārbaudi un neizmainīt jau strādājošu tīklu.
Noildzes gadījumā pārbaudiet tīkla ceļu
Panelī apstipriniet pašreizējo publisko IP un VM darbību. Domēnam pārbaudiet A un AAAA, kā arī to, vai klients izvēlas IPv6. Ja serveris ir privātā tīklā, var būt vajadzīgs VPN vai pārejas serveris.
Pārskatiet maršrutu, pakalpojumu sniedzēja tīkla kārtulas un viesu sistēmas ugunsmūri. Administratora publiskā adrese var būt mainījusies, kamēr atļautā /32 adrese palikusi vecā. Atļaujiet vajadzīgo avotu un faktisko SSH portu, nevis visu tīklu.
Oracle Cloud pārbaudiet security lists, NSG, maršrutēšanu un saglabātās viesu sistēmas kārtulas. Nepārslēdziet attēlu uz jaunu UFW konfigurāciju un neiztukšojiet iptables. Skatiet Oracle tīkla un atslēgu soļus. Ping neatbildēšana pati par sevi nepierāda, ka SSH nevar darboties.
Atteikuma gadījumā apskatiet klausīšanās portu
Uzticamajā servera konsolē pārbaudiet servisu, socket vienību, klausīšanās portus, žurnālu un konfigurācijas sintaksi.
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-pagerSocket aktivizācijas gadījumā neaktīvs ssh.service viens pats nenozīmē, ka SSH neklausās. Salīdziniet faktisko portu ar klienta iestatījumu. Veiksmīgs sshd -t bez izvades pārbauda konfigurācijas sintaksi, nevis ārēju sasniedzamību.
Noraidītas atslēgas gadījumā pārbaudiet kontu
Vispirms pārliecinieties, ka izmantots konkrētā attēla pareizais lietotājs. No sava datora norādiet paredzēto privāto atslēgu un pārbaudiet, kas tiek piedāvāts.
ssh -v -S none -o IdentitiesOnly=yes -o StrictHostKeyChecking=ask -p 22 -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10IdentitiesOnly ierobežo aģenta atslēgu izvēli, taču konfigurācijā norādītie IdentityFile var joprojām piedalīties. Salīdziniet ar ssh -G. Ja lokālo atslēgu nevar nolasīt vai tās tiesības ir pārāk plašas, vispirms atrisiniet šo lokālo kļūdu.
Serverī ar getent noskaidrojiet faktisko kontu un mājas direktoriju; /home/ubuntu piemērā nomainiet, ja tas atšķiras.
getent passwd ubuntu
sudo ls -ld /home/ubuntu /home/ubuntu/.ssh /home/ubuntu/.ssh/authorized_keys
sudo ssh-keygen -lf /home/ubuntu/.ssh/authorized_keysSalīdziniet publiskās atslēgas nospiedumu, failu īpašniekus, direktoriju tiesības un žurnāla noraidījuma iemeslu. Pārskatiet AuthorizedKeysFile, Match un Include iestatījumus, kā arī pakalpojumu sniedzēja pārvaldītās atslēgas. Saglabājiet esošās autorizētās atslēgas. Neatspējojiet StrictModes un neieslēdziet paroles tikai kļūdas apiešanai.
Servera identitātes maiņu apstipriniet neatkarīgi
Pārinstalēšana vai IP nodošana citai instancei var izskaidrot atslēgas maiņu, bet iespējams arī nepareizs galamērķis vai savienojuma pārtveršana. Uzticamajā panelī pārbaudiet instances ID un plānoto izmaiņu. Pēc tam konsolē nolasiet servera atslēgas nospiedumu.
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256Tā ir servera Ed25519 identitātes atslēga, nevis lietotāja pieteikšanās vai Oracle konsoles savienojuma atslēga. Tikai pēc nospieduma sakritības saglabājiet known_hosts kopiju un aizstājiet attiecīgā servera ierakstu. Nedzēsiet visu failu un neatslēdziet identitātes pārbaudi. Ja izmaiņa nav izskaidrojama, savienojumu neturpiniet.
Mainiet vienu cēloni un pārbaudiet jaunu sesiju
Veiciet šauru izmaiņu pēc atrastā cēloņa, saglabājot neatkarīgu atkopšanas piekļuvi. SSH konfigurāciju pārbaudiet pirms pārlādēšanas. Mainot portu, jāņem vērā arī socket aktivizācijas konfigurācija un tīkla kārtulas.
No klienta atkārtoti izveidojiet jaunu savienojumu bez sesiju koplietošanas, pārbaudiet kontu un vajadzīgās sudo tiesības. Vecā sesija nav jaunās piekļuves pārbaude. Pierakstiet cēloni, izmaiņu un rezultātu; pēc tam turpiniet vietnes iestatīšanu.
Jautājumi un atbildes
Vai SSH kļūdas dēļ uzreiz pārinstalēt VPS?
Nē. Vispirms nosakiet posmu un izmantojiet saglabāto sesiju vai konsoli. Pārinstalēšana var iznīcināt datus un pati neatrisina kļūdainu tīkla kārtulu.
Vai strādājoša pakalpojumu sniedzēja konsole pierāda SSH darbību?
Konsole var izmantot citu piekļuves ceļu. Tā palīdz izpētīt serveri, bet publisks SSH savienojums jāapstiprina no sava klienta.