Tento článek ukazuje, jak řešit problémy se Secure Shell (SSH) na serveru Linux®.
Různé typy chyb
Pokud se nemůžete SSH připojit na server, měli byste věnovat pozornost chybám (nebo jejich nedostatku), které obdržíte. Následující seznam popisuje některé možné chyby.
Přístup odepřen nebo ověření odmítnuto
K tomuto typu chyby dochází vždy, když se přihlásíte přes SSH s nesprávnými přihlašovacími údaji. Pokud se zobrazí tato chyba, můžete zkontrolovat následující:
- Ujistěte se, že jste uživatelské jméno a heslo zadali správně.
- Pokud používáte pár klíčů SSH, ujistěte se, že máte na místním počítači nainstalován soukromý klíč.
Port 22:Připojení odmítnuto
K této chybě dochází z následujících důvodů:
- SSH není nainstalován nebo spuštěn.
- SSH naslouchá na jiném portu.
- Pravidla brány firewall nepovolují SSH.
Chyba sítě:Časový limit připojení vypršel
K této chybě často dochází kvůli problémům se síťovým připojením na serveru nebo na místním počítači. Kdykoli se zobrazí tyto chyby, ujistěte se, že je váš místní počítač připojen k Internetu. Pokud je připojen, zkontrolujte také připojení k serveru a ujistěte se, že server běží.
Zkontrolujte zvenčí
Zde je několik běžných způsobů odstraňování problémů s SSH mimo váš server:
nmap
nmap
je nástroj pro průzkum sítě a zabezpečení nebo skener portů. Tento nástroj můžete použít ke kontrole, zda je na serveru otevřený port pro SSH. Následující příklad poskytuje příkaz a jeho výstup:
$ nmap <ip-address-of-host>
Starting Nmap 6.40 ( https://nmap.org ) at 2020-03-21 23:44 UTC
Nmap scan report for <ip-address-of-host>
Host is up (0.033s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 4.35 seconds
ssh -vvv
Pomocí ssh
pomocí -vvv
flags vytváří podrobný výstup, když se připojujete SSH na server. Tento příkaz může poskytnout užitečné informace pro řešení problémů, kde přesně může být problém.
Zkontrolujte zevnitř
Máte-li problémy s SSH, můžete se přihlásit pomocí nouzové konzoly k řešení problémů se serverem a zkontrolovat následující podmínky:
Proces SSH
Nejprve se pomocí následujícího příkazu ujistěte, že je spuštěn proces SSH:
- Pro Ubuntu® 16.04+, Debian® 8+ a Centos® 7+:
systemctl status sshd
- Pro Centos 6:
service sshd status
Pokud nevidíte službu spuštěnou, můžete proces spustit pomocí následujícího příkazu:
- Pro Ubuntu 16.04+, Debian 8+ a Centos 7+:
systemctl start sshd
- Pro Centos 6:
service sshd start
netstat
netstat
příkaz zobrazí aktuální připojení na serveru. Tento příkaz je dobrý způsob, jak zkontrolovat a zjistit, na kterém portu SSH běží. Když spustíte netstat
, použijte příznaky -plnt
získáte následující výstup:
# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::22 :::* LISTEN 13631/sshd
Konfigurační soubor SSH
Konfigurační soubor SSH, /etc/ssh/sshd_config , nastaví konfiguraci SSH. V konfiguračním souboru je mnoho možností, ale zde jsou některé, na které je třeba dávat pozor:
Port 22 <---- The port ssh runs on
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
~
~
~
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes <---- Allows or block users logging in as root
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes <---- Will state whether or not a user needs an ssh key to log in
Případně můžete použít grep
příkaz k vyhledání těchto konkrétních řádků. Když použijete grep
příkaz, musíte být konkrétní, když hledáte konkrétní frázi. Buďte opatrní s interpunkcí, velkými písmeny a pravopisem.
$ sudo grep Port /etc/ssh/sshd_config
# Port 22
Brána firewall
Pokud máte připojení k síti, všechny konfigurace jsou správné a stále se nemůžete připojit přes SSH, možná se budete chtít podívat na pravidla brány firewall na serveru. Na serverech Linux iptables má tato pravidla. Chcete-li zobrazit seznam pravidel brány firewall v iptables , spusťte příkaz iptables -L
. Chcete-li se dozvědět více o iptables , přečtěte si Úvod do iptables.
fail2ban
fail2ban
je aplikace, která zablokuje IP adresu po určitém počtu neúspěšných pokusů o přihlášení. Chcete-li zkontrolovat vězení, můžete spustit příkaz fail2ban-client status
. Tento příkaz vám zobrazí všechna nakonfigurovaná vězení na serveru a IP adresy, které se v těchto vězeních nacházejí.
Soubory protokolu
Když vše ostatní selže, přejděte do souborů protokolu. Tyto soubory poskytují informace o tom, zda se na server připojujete či nikoli, pokud používáte neplatné heslo a podobně. Soubory protokolu, které byste měli zkontrolovat, zahrnují následující soubory:
- Ubuntu nebo Debian:/var/log/auth.log
- CentOS nebo RHEL®:/var/log/secure
Při prohledávání těchto souborů protokolu můžete použít less
příkaz k analýze celého souboru a vyhledání konkrétního času nebo řetězce. Pokud jste se k serveru přihlásili z konzole, můžete použít tail -f
v protokolech, když se pokoušíte připojit SSH na server. Poté můžete sledovat aktualizaci souborů protokolu v reálném čase.