POZNÁMKA: Než začnete, ujistěte se, že zařízení, ke kterému se chcete připojit, je online a chyba není důsledkem nedostupnosti zařízení.
Problém 1: Služba SSH není spuštěna
Běžnou příčinou chyb připojení SSH je služba, která není spuštěna na vzdáleném hostiteli. Příčinou může být nechtěné vypnutí služby nebo spuštění služby po restartu systému.
Chcete -li zkontrolovat, zda je služba SSH spuštěna, použijte správce systému pomocí příkazu:
sudosystemctl status sshd
Výše uvedený příkaz by měl hlásit, zda je služba spuštěna nebo ne, jak je znázorněno na níže uvedených screenshotech.
Řešení
Chcete -li vyřešit problémy s SSH způsobené službou, která není spuštěna, spusťte službu pomocí systému. Pokud služba odpoví chybami, zkontrolujte protokoly a opravte problémy uvedené v protokolu.
Pomocí níže uvedeného příkazu zkontrolujte protokoly služeb.
rukojeť 'sshd' /kde/log/autorizační protokolPomocí níže uvedeného příkazu spustíte nebo zastavíte službu SSH pomocí systemd.
sudosystemctl start sshdProblém 2: SSH na nestandardním portu
Druhým běžným problémem při ladění připojení SSH je použití nestandardního portu. Pokud SSH běží na jiném portu, než je výchozí port 22, nepřipojíte se ke vzdálenému hostiteli, pokud výslovně neurčíte port, na kterém je SSH spuštěno.
Chcete -li zobrazit port, na kterém běží SSH, použijte nástroj, jako je netstat, jak je uvedeno níže:
[stovky@centos8 ~]$sudo netstat -ptln | rukojeť sshtcp0 00,0.0,0:560,0.0,0:*POSLOUCHAT1131/sshd
tcp60 0:::56:::*POSLOUCHAT1131/sshd
Výše uvedený výstup ukazuje, na kterém portu je služba SSH spuštěna. V tomto případě je to port 56.
Řešení
Chcete -li tento problém vyřešit, můžete použít informace z netstatu a explicitně zadat port v příkazu ssh jako:
sshuživatelské jméno@ip -p 56Problém 3: Další služba používající stejný port
Další příčinou chyb připojení SSH je to, že stejný port jako služba SSH používá také jiná služba nebo proces. Pokud je například SSH výslovně určeno pro spuštění na portu 80 (hrozný nápad), služba jako Apache může používat stejný port.
Chcete -li zjistit, zda jiný proces používá stejný port jako SSH, zkontrolujte protokoly pomocí příkazu:
sudojournalctl-tsshdTento příkaz by měl vrátit chybu podobnou té, která je uvedena níže, což naznačuje, zda jiný proces používá port vázaný na SSH.
sshd[110611]: chyba: Vázat na port80dne 0.0.0.0 se nezdařilo: Adresa jižvpoužitíJe dobré zajistit, aby chyba vazby portu byla způsobena jinou službou, nikoli bezpečnostními opatřeními, jako je SELinux.
Řešení
K vyřešení tohoto problému můžete použít různé způsoby. Tyto zahrnují:
První je svázat službu SSH s jiným portem. To lze provést úpravou konfiguračního souboru SSH. Například změňte položku Port na port 3009, jak je uvedeno v příkazech:
sudo nano /atd/ssh/sshd_configPřístav3009
Další metodou, kterou můžete použít k vyřešení tohoto problému, je zastavit službu pomocí portu SSH. Zastavte například službu apache pomocí portu 80 jako:
sudosystemctl stop httpdsudosystemctl zakázat httpd
Problém 4: Firewall
Pokud jste vyzkoušeli všechny výše uvedené metody a stále nemáte připojení SSH, můžete přejít k další možné příčině problému: omezení brány firewall. V závislosti na metodě brány firewall, kterou používáte (UFW nebo Iptables), musíte zajistit, aby brána firewall umožňovala připojení SSH.
Řešení
Pravidla brány firewall jsou široká a mohou se lišit v závislosti na konfiguraci systému. Nemohu tedy pokrýt všechny aspekty. Následuje však jednoduché řešení, jak zajistit, aby služba SSH byla povolena v bráně firewall UFW.
sudoufw povolit<ssh_port> /tcpMůžete také resetovat všechna pravidla UFW a začít znovu. To vám umožní odstraňovat problémy s připojením brány firewall od začátku.
sudoufw resetProblém 5: Zakázané přihlašování pomocí hesla
Někdy můžete SSH nakonfigurovat tak, aby nepřijímal přihlášení pomocí hesla a používal pouze ověřování pomocí veřejného klíče. To může způsobit problém, pokud veřejný klíč není k dispozici na serveru nebo chybí váš pár soukromých klíčů.
Chcete -li zkontrolovat, zda jsou povolena přihlášení pomocí hesla, proveďte konfiguraci ssh jako:
[stovky@centos8]$sudo rukojeťOvěření hesla/atd/ssh/sshd_config#PasswordAuthentication ano
Ověření heslaAno
# Ověření hesla. V závislosti na konfiguraci PAM
# Ověření PAM, poté povolte, ale nastavte PasswordAuthentication
Výše uvedený výstup ukazuje, že je povoleno přihlášení pomocí hesla.
Řešení
K vyřešení výše uvedeného problému můžete použít dvě metody:
Nejprve, pokud máte hodnotu nastavenou na ne, změňte hodnotu PasswordAuthentication na yes a restartujte službu ssh.
Druhou metodou je vytvořit pár klíč-hodnota ssh a použít jej k přihlášení na server. Chcete-li se dozvědět, jak vytvořit pár klíč-hodnota ssh, použijte následující průvodce.
https://linuxhint.com/find-ssh-public-key/
https://linuxhint.com/use-ssh-copy-id-command/
Závěr
V této rychlé příručce jsme diskutovali o hlavních příčinách chyb připojení SSH a o tom, jak je lze vyřešit. Přestože se tato příručka zabývá běžnými problémy, na základě konfigurace a oprávnění můžete najít chyby specifické pro váš systém.