Co se stane na pozadí, když se poprvé připojíte k serveru pomocí ssh
Když se připojujete k serveru poprvé, server vás vyzve k potvrzení, že jste připojeni ke správnému systému. Následující příklad používá příkaz ssh pro připojení ke vzdálenému hostiteli s názvem host03:
# ssh host03 The authenticity of host 'host03 (192.0.2.103)' can’t be established. ECDSA key fingerprint is ... Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'host03,192.0.2.103' (ECDSA) to the list of known hosts.
Ověření hostitele je jednou z hlavních funkcí OpenSSH. Příkaz zkontroluje, zda se připojujete k hostiteli, o kterém si myslíte, že se připojujete. Když zadáte yes, klient připojí veřejný hostitelský klíč serveru k souboru ~/.ssh/known_hosts uživatele a v případě potřeby vytvoří adresář ~/.ssh. Při příštím připojení ke vzdálenému serveru klient porovná tento klíč s klíčem, který server dodal. Pokud se klíče shodují, nebudete dotázáni, zda chcete pokračovat v připojení.
Co způsobuje chybu ověření klíče hostitele
Pokud se vás někdo pokusí oklamat, abyste se přihlásili do svého počítače, aby mohl vyčuhovat vaši relaci SSH, obdržíte varování podobné následujícímu:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is dd:cf:50:31:7a:78:93:13:dd:99:67:c2:a2:19:22:13. Please contact your system administrator. Add correct host key in /home/user01/.ssh/known_hosts to get rid of this message. Offending key in /home/lcz/.ssh/known_hosts:7 RSA host key for 192.168.219.149 has changed and you have requested strict checking. Host key verification failed.
Pokud se někdy zobrazí takové varování, zastavte se a zjistěte, zda existuje důvod ke změně klíče hostitele vzdáleného serveru (například pokud byl upgradován SSH nebo byl upgradován samotný server). Pokud neexistuje dobrý důvod pro změnu hostitelského klíče, nepokoušejte se připojit k tomuto počítači, dokud situaci nevyřešíte.
Jak opravit chybu „Ověření klíče hostitele se nezdařilo“
Metoda 1 – ruční odstranění starého klíče
1. Na zdrojovém serveru jsou staré klíče uloženy v souboru ~/.ssh/known_hosts .
2. Pouze v případě, že je tato událost legitimní a pouze v případě, že je přesně známo, proč server SSH uvádí jiný klíč, upravte soubor známí_hostitelé a odstraňte již neplatný záznam klíče. Každý uživatel na klientském/zdrojovém serveru má ve svém domovském adresáři své vlastní známé_hostitele, stačí odstranit položku v souboru konkrétního uživatele pro cílový server. Například:
– Pokud chce root použít ssh na server, stačí odstranit záznam v /root/.ssh/known_hosts soubor je v pořádku.
– Pokud chce testuser ssh na server, odstraňte záznam v souboru /home/testuser/.ssh/known_hosts .
3. V mém případě odeberu klíč (zvýrazněný červeně) pro cílový server 192.168.219.149 ze souboru /home/user01/.ssh/known_hosts.
# vim /home/user01/.ssh/known_hosts 172.104.9.113 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLrY91bQOihgFZQ2Ay9KiBG0rg51/YxJAK7dvAIopRaWzFEEis3fQJiYZNLzLgQtlz6pIe2tj9m/Za33W6WirN8= 192.168.219.148 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU= 192.168.219.149 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU=
Metoda 2 – odstranění starého klíče pomocí příkazu ssh-keygen
Starý klíč můžete také odstranit pomocí příkazu ssh-keygen. Syntaxe pro použití příkazu je uvedena níže.
$ ssh-keygen -R [hostname|IP address]
Například V našem případě použijeme IP adresu k odstranění starého klíče.
$ ssh-keygen -R 192.168.219.149 # Host 192.168.219.149 found: line 3 /home/user01/.ssh/known_hosts updated. Original contents retained as /home/user01/.ssh/known_hosts.oldPoznámka :Pokud přesně nevíte, proč server SSH uvádí jiný klíč, buď je váš souborknown_hosts nesprávný, nebo musí někdo prozkoumat tento server a síťová připojení, aby pochopil důvod neočekávané změny.
Ověřit
Pokud vzdálené servery požádají o potvrzení přidání nového klíče do souboru ~/.ssh/known_host, potvrdí, že jste úspěšně odstranili starý klíč. Pokud požadavek potvrdíte, zdrojový počítač přidá nový klíč do souboru ~/.ssh/known_host.
$ ssh [email protected] The authenticity of host '192.168.219.149 (192.168.219.149)' can't be established. ECDSA key fingerprint is SHA256:V+iGp3gwSlnpbtYv4Niq6tcMMSZivSnYWQIaJnUvHb4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.219.149' (ECDSA) to the list of known hosts.