GNU/Linux >> Znalost Linux >  >> Cent OS

Připojení pomocí SSH k hostiteli, který není v DNS/hosts, se na nějakou dobu zablokuje při zahájení připojení

ssh, scp nebo sftp k uzlu, který se neobjevuje v souboru DNS nebo /etc/hosts, je pomalé při vytváření počátečního připojení. Po navázání spojení je rychlost očekávaná. Ke zvážení jsou dva případy, viz níže. Všimněte si, že ve většině prostředí k tomuto problému nedojde, protože adresy IP budou v /etc/hosts nebo DNS.

Čas se stráví při řešení IP adresy cílového/zdrojového názvu hostitele nebo hledání názvu hostitele pro cílovou/zdrojovou IP adresu a/nebo provádění autentizace na základě stejných dat. Když použijeme -vvv, existují dva různé verbózní příznaky ssh představuje dva různé případy.

Případ 1

# ssh -vvv 10.10.10.205
... ...
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 10.10.10.205.
debug1: Unspecified GSS failure. Minor code may provide more information
No credentials cache found

V systémech CentOS/RHEL je démon SSH nakonfigurován tak, aby používal Generic Security Services Application Program Interface (GSSAPI) autentizace ve výchozím nastavení. GSSAPI standardně vyhledá (přes DNS nebo jiné prostředky založené na /etc/resolv.conf) požadovanou IP. Všimněte si, že vyhledávání probíhá, i když používáte IP adresy. To je vyžadováno pro bezpečné/spolehlivé ověření.

Pokud zkontrolujete konfigurační manuál SSH:

# man ssh_config
...
GSSAPIAuthentication
     Specifies whether user authentication based on GSSAPI is allowed. The default is no
...

Pokud se IP / hostitel neobjeví v /etc/hosts nebo v databázi DNS, vyhledávací dotaz vyprší, protože se pokusí znovu, nakonec to vzdá a pokračuje v otevírání spojení. Čas se stráví během vyhledávání (50 sekund nebo více), dokud se nezobrazí výzva k zadání hesla. K tomuto zablokování dochází pouze u hostitelů, kteří jsou v místní síti LAN a nejsou v souboru DNS nebo /etc/hosts. Všimněte si, že metoda ověřování je GSSAPI.

Případ 2

# ssh -vvv 10.10.10.12
. . . 
debug1: Offering public key: /root/.ssh/id_dsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
--stalls for 8 seconds--

Zde se vzdálený hostitel pokouší provést DNS vyhledávání na IP klientského uzlu. Může se jednat o zcela novou instalaci fyzického nebo virtuálního počítače, která není aktualizována v /etc/hosts nebo DNS, a proto se zastaví, dokud nevyprší časový limit dotazu DNS. Opět je provedeno vyhledávání DNS / hostitelů (na základě souboru /etc/resolv.conf na klientovi/serveru).

Řešení

Podporovaným a správným řešením tohoto problému je úspěšné vyhledávání názvu hostitele / IP adresy. Chcete-li to provést, můžete:

  • Zkontrolujte svou konfiguraci v /etc/resolv.conf pro překlad názvů a konfiguraci serveru DNS.
  • Pokud není definováno, definujte nově zavedeného hostitele / IP, který má být zahrnut do serveru DNS
  • Pokud je problém nebo není vhodné provádět definice DNS (s největší pravděpodobností je přiřazení dočasné – tj. testovací systém, dočasný virtuální počítač atd.), ujistěte se, že je pár název hostitele / IP adresa zahrnut ve zdroji a cíli environments' soubor /etc/hosts (toto je mnohem praktičtější)

Řešení

Bez správného DNS / hosts (nebo konfigurace /etc/resolv.conf v tomto případě) mají být SSH připojení zpočátku pomalá. Očekává se, že to tak bude v OEL. Případně lze čekací situaci vyřešit některými změnami konfigurace.

Pro Případ 1 mohla být deaktivována autentizace GSSAPIA. I když je to možné, důrazně se to nedoporučuje, protože použití GSSAPI je jednou ze základních bezpečnostních funkcí poskytovaných SSH. SSH nejen umožňuje, aby byl obsah komunikace bezpečný, ale také se může ujistit, že tento cíl je ten, který je určen. Je to proto, že GSSAPIAuthentication je v OEL nastaveno na yes (ačkoli manuálová stránka říká, že je ve výchozím nastavení „Ne“ – ale je to výchozí nastavení základních ssh balíčků – nikoli konkrétní distribuce). Přesto je možné ji deaktivovat, pokud jste si naprosto jisti, že jste v uzavřené síti a víte, co děláte:

Dočasné nastavení – stačí zjistit, zda to funguje na příkazovém řádku:

# ssh -o "GSSAPIAuthentication no" 10.10.10.205

Výzva k zadání hesla by se měla objevit okamžitě, pokud je případ 1 váš případ. Chcete-li toto nastavit trvale (i přes všechna doporučení jinak), můžete změnit GSSAPIAuthentication na no jedním z těchto způsobů na klientovi:

1. Přidejte řádek níže do konfiguračního souboru ssh domovského adresáře uživatele (~/.ssh/config ):

GSSAPIAuthentication no

2. Přidejte jej do systémového konfiguračního souboru SSH u klienta. tj. – /etc/ssh/ssh_config a na straně serveru. Upravte konfigurační soubor na straně serveru (tj. systém, ke kterému se připojujete, v tomto případě je to 10.10.10.205) – /etc/ssh/sshd_config a restartujte sshd:

# service sshd restart

to lze provést, když již existují spojení SSH.

V případě 2, pokud nějak nemůžete/nechcete změnit konfiguraci DNS nebo soubory /etc/hosts (i přes všechna doporučení jinak), můžete situaci obejít vypnutím vyhledávání DNS prováděných pro protokol SSH. Můžete to udělat nastavením

UseDNS no

v konfiguračním souboru SSH serveru – /etc/ssh/sshd_config

a restartujte sshd na serveru

# service sshd restart

to lze provést, když jsou připojení aktivní.


Cent OS
  1. Obsluhujte více domén pomocí virtuálních hostitelů

  2. SSH bez hesla nefunguje pro místní uživatele na serverech LDAP – CentOS/RHEL 7

  3. Alias ​​názvu konfigurace ssh nefunguje pro scp

  1. Jak se mohu vyhnout ověření hostitele SSH pro známé hostitele?

  2. SSH:připojení k hostiteli localhost port 22:Připojení odmítnuto

  3. ssh_exchange_identification:Připojení uzavřeno vzdáleným hostitelem (bez použití hosts.deny)

  1. SSH ke vzdáleným hostitelům přes proxy nebo bastion s ProxyJump

  2. Ssh – pomocí již zavedeného kanálu Ssh?

  3. Ssh – jak se vyhnout žádosti Ssh o povolení?