GNU/Linux >> Znalost Linux >  >> Linux

Jak zakázat kontrolu hostitelského klíče SSH v Linuxu

SSH komunikace je zabezpečena pomocí kryptografie veřejného klíče. Když se uživatel poprvé připojí k serveru SSH pomocí klienta SSH, program SSH uloží veřejný klíč serveru SSH do domovského adresáře uživatele uvnitř souboru, známí_hostitelé, do skryté složky s názvem ~/.ssh/, jak je znázorněno na následujícím snímku obrazovky:

Nyní, následně, kdykoli se klient ssh připojí k serveru, porovnává veřejný klíč zaslaný serverem s veřejným klíčem serveru uloženým v souboru ~/.ssh/known_hosts. Pokud se veřejný klíč neshoduje, klient předpokládá, že síťový provoz je unesen nebo server, ke kterému se připojuje, není stejný, a proto SSH klient spojení přeruší, jak je znázorněno zde:

$ ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
3f:1b:f4:bd:c5:aa:c1:1f:bf:4e:2e:cf:53:fa:d8:59.
Please contact your system administrator.
Add correct host key in /home/admin/.ssh/known_hosts to get rid of this message.
Offending key in /home/admin/.ssh/known_hosts:3
RSA host key for 192.168.12.12 has changed and you have requested strict checking.
Host key verification failed.$

Existuje několik možných důvodů, proč se klíč vzdáleného hostitele změnil. Útok Man-in-the-Middle je pouze jedním z možných důvodů. Mezi další možné důvody patří:

  • OpenSSH byl přeinstalován na vzdáleném hostiteli, ale z jakéhokoli důvodu nebyl obnoven původní klíč hostitele.
  • Vzdálený hostitel byl oprávněně nahrazen jiným počítačem.

Je také možné, že server byl přeformátován nebo klíč serveru vyměněn z jakéhokoli legitimního důvodu. Za takových okolností musí uživatel aktualizovat své soubory ~/.ssh/known_hosts odstraněním starých klíčů, aby se umožnilo přihlášení k serveru.

Pokud jste si jisti, že je to neškodné, můžete použít jednu ze 2 níže uvedených metod k oklamání openSSH, aby vám umožnilo přihlášení. Ale mějte na paměti, že jste se stali zranitelní vůči útokům typu man-in-the-middle.

Metoda 1 – odeberte klíč hostitele ze souboru ~/.ssh/known_hosts

První metodou je odstranění vzdáleného hostitele ze souboru ~/.ssh/known_hosts. Všimněte si, že varovná zpráva již uvádí číslo řádku v souboru známých_hostitelů, který odpovídá cílovému vzdálenému hostiteli. Nepříznivý řádek ve výše uvedeném příkladu je řádek 3 („Nepříznivý klíč v /home/admin/.ssh/known_hosts:3“)

K odstranění tohoto jednoho řádku (řádek 3) ze souboru můžete použít následující jednořádkový řádek.

$ sed -i 3d ~/.ssh/known_hosts

Všimněte si, že s výše uvedenou metodou budete vyzváni k potvrzení otisku hostitelského klíče, když spustíte ssh pro přihlášení.

Metoda 2 – Zakázat StrictHostKeyChecking

Druhá metoda používá dva parametry openSSH:

  • StrictHostKeyChecking
  • UserKnownHostsFile

Tato metoda oklame SSH tím, že jej nakonfiguruje tak, aby používal prázdný soubor známých_hostitelů, a NEŽÁDAL vás o potvrzení klíče identity vzdáleného hostitele.

$ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]
Warning: Permanently added '192.168.12.12' (RSA) to the list of known hosts.
[email protected]'s password:

Parametr UserKnownHostsFile určuje databázový soubor, který se má použít pro uložení klíčů hostitele uživatele (výchozí je ~/.ssh/known_hosts). Soubor /dev/null je speciální soubor systémového zařízení, který zahodí vše a vše, co je do něj zapsáno, a když je použit jako vstupní soubor, okamžitě vrátí End Of File.

Nakonfigurováním souboru null zařízení jako databáze klíčů hostitele je SSH oklamán tím, že si myslí, že klient SSH se nikdy předtím nepřipojil k žádnému serveru SSH, a tak nikdy nenarazí na neshodný klíč hostitele. Parametr StrictHostKeyChecking určuje, zda SSH automaticky přidá nové klíče hostitele do souboru databáze klíčů hostitele. Nastavením na ne se hostitelský klíč automaticky přidá bez potvrzení uživatele pro všechna první připojení. Kvůli souboru databáze s nulovým klíčem se všechna připojení zobrazí poprvé pro jakýkoli hostitel serveru SSH. Proto je klíč hostitele automaticky přidán do databáze klíčů hostitele bez potvrzení uživatele. Zápis klíče do souboru /dev/null klíč zahodí a ohlásí úspěch.

Zadáním výše uvedených 2 možností SSH na příkazovém řádku můžete obejít kontrolu klíče hostitele pro konkrétní přihlášení SSH. Pokud chcete trvale obejít kontrolu klíče hostitele, musíte stejné možnosti zadat v konfiguračním souboru SSH. Pokud chcete, aby změny byly trvalé pro všechny uživatele, můžete upravit globální konfigurační soubor SSH (/etc/ssh/ssh_config).

Pokud chcete cílit na konkrétního uživatele, upravte konfigurační soubor SSH pro konkrétního uživatele (~/.ssh/config). Níže uvedené pokyny platí pro oba soubory. Předpokládejme, že chcete obejít kontrolu klíče pro konkrétní podsíť (192.168.0.0/24).

Přidejte následující řádky na začátek konfiguračního souboru SSH.

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Všimněte si, že konfigurační soubor by měl mít řádek jako Host * následovaný jedním nebo více páry parametr-hodnota. Host * znamená, že se bude shodovat s jakýmkoli hostitelem. Parametry následující po Host * jsou v podstatě obecné výchozí hodnoty. Protože se pro každý parametr SSH používá první odpovídající hodnota, chcete na začátek souboru přidat parametry specifické pro hostitele nebo podsítě.

Jako poslední upozornění, pokud nevíte, co děláte, je pravděpodobně nejlepší obejít kontrolu klíčů případ od případu, spíše než provádět plošné trvalé změny v konfiguračních souborech SSH.


Linux
  1. Jak změnit port SSH v Linuxu

  2. Jak nakonfigurovat ověřování na základě klíče SSH v systému Linux

  3. Jak opravit problematický klíč v souboru ~/.ssh/known_hosts

  1. Jak nastavit klíče SSH

  2. Jak nastavit klíče SSH pro přihlášení k ssh „bez hesla“ v systému Linux

  3. Jak deaktivovat klávesu klávesnice v Linuxu (Ubuntu)?

  1. Jak vygenerovat klíč SSH ve Windows 10

  2. Jak zakázat ověřování hesla SSH na Linux VPS

  3. Jak funguje SSH bez hesla v systému Linux / UNIX