Malé triky SSH

V tomto článku jsme shromáždili naše nejlepší tipy pro efektivnější používání SSH. Zjistíte, jak:

  • Přidat druhý faktor k přihlášení SSH
  • Bezpečně používat agent forwarding
  • Ukončit visící SSH relaci
  • Udržet trvalý terminál otevřený
  • Sdílet vzdálenou terminálovou relaci s přítelem (bez Zoomu!)

Přidání druhého faktoru k vašemu SSH

Druhý faktor autentizace k vašim SSH připojením můžete přidat pěti různými způsoby:

  1. Aktualizujte svůj OpenSSH a použijte šifrovací klíč. V únoru 2020 byla do OpenSSH přidána podpora FIDO U2F (Universal Second Factor) šifrovacích klíčů. To je skvělá nová funkce, ale je tu háček: pouze ti klienti a servery, které byly aktualizovány na verzi OpenSSH 8.2 a vyšší, budou moci používat šifrovací klíče, protože únorová aktualizace zavádí nové typy klíčů. Pomocí příkazu ssh –V můžete zkontrolovat klientskou verzi SSH, a serverovou — příkazem nc [servername] 22

    Únorová verze přidala dva nové typy klíčů — ecdsa-sk a ed25519-sk (spolu s odpovídajícími certifikáty). Pro generování souboru klíče stačí vložit svůj šifrovací klíč a spustit příkaz:
    $ ssh-keygen -t ecdsa-sk -f ~\/ .ssh\/id_ecdsa_sk

    Ten vytvoří veřejné a soukromé klíče a propojí je s vaším zařízením U2F. Úkolem soukromého klíče na zařízení U2F je dešifrovat tajný popisovač klíče na disku při aktivovaném šifrovacím klíči.

    Kromě toho můžete jako druhý faktor poskytnout kódovou frázi pro vaše klíče.

    Klíč-resident je další podporovaný OpenSSH typ generace -sk- klíčů. Při tomto přístupu se popisovač ukládá na zařízení U2F a umožňuje vám mít ho se šifrovacím klíčem, kdykoliv je potřeba. Klíč-resident lze vytvořit příkazem:

    $ ssh-keygen -t ecdsa-sk -O resident -f ~\/ .ssh\/id_ecdsa_sk

    Poté, pro navrácení popisovače zpět do paměti na novém zařízení, vložte šifrovací klíč a spusťte příkaz:

    $ ssh-add -K

    Při připojení k hostiteli budete stále muset aktivovat šifrovací klíč.

  2. Využít PIV+PKCS11 a Yubikey. Pro připojení k zařízením s dřívějšími verzemi SSHD pomocí šifrovacího klíče bude zapotřebí jiný přístup. Na Yubico je průvodce používáním U2F+SSH s PIV/PKCS11 (angl.). To není totéž jako FIDO U2F, a i když metoda funguje, stojí velké úsilí pochopit, jaká magie ji pohání.
  3. Použijte uživatelský yubikey-agent ssh-agent. Filippo Valsorda napsal SSH agent pro Yubikey. Je zcela nový a obsahuje minimum funkcí.
  4. Použití Touch ID a sekey. Sekey je SSH agent s otevřeným zdrojovým kódem, který uchovává tajné klíče v chráněné enclave Macu a umožňuje používat Touch ID k přístupu.
  5. Použijte Single Sign On SSH. Napsal jsem návod, jak nastavit tuto metodu (anglicky). Jednou z výhod single sign on SSH je možnost využít bezpečnostní politiky vašeho poskytovatele identit — včetně podpory vícefaktorové autentizace (MFA).

Bezpečné používání agent forwarding

V SSH agent forwarding umožňuje vzdálenému uzlu přístup k SSH agentu vašeho lokálního zařízení. Když používáte SSH se zapnutým agent forwarding (obvykle přes ssh -A), v připojení budou dva kanály: vaše interaktivní relace a kanál pro agent forwarding. Skrze tento kanál se Unix-socket, vytvořený vaším lokálním SSH agentem, připojuje k vzdálenému uzlu. Je to riskantní metoda, protože uživatel s root přístupem na vzdáleném zařízení může získat přístup k vašemu lokálnímu SSH agentu a potenciálně vystupovat v síti jako vy. Při používání standardního SSH agenta z balíku Open SSH ani nebudete vědět, že se to stalo. Mít U2F klíč (nebo Sekey) vám pomůže účinně zablokovat jakékoli pokusy o zneužití vašeho SSH agenta zvenčí.

I s touto opatrností bude dobrým nápadem co nejméně používat agent forwarding. Nepoužívejte ho při každé relaci — využívejte agent forwarding pouze tehdy, když si jste jisti, že je pro aktuální relaci nezbytný.

Odhlášení ze zamrzlé relace

Přerušení sítě, nekontrolované chování programů nebo řídící sekvence, která blokuje vstup z klávesnice — to vše jsou možné příčiny přerušení SSH relace.

Zamrzlou relaci lze ukončit několika způsoby:

  1. Automaticky se odhlásit při přerušení sítě. Do svého .ssh/config je nutné přidat následující:
    ServerAliveInterval 5
    ServerAliveCountMax 1

    ssh bude každých ServerAliveInterval sekund odesílat echo vzdálenému uzlu za účelem kontroly spojení. Pokud neobdrží více než ServerAliveCountMax echo odpověď, ssh ukončí spojení timeoutem a odhlásí se z relace.

  2. Odstřihnout se od relace. SSH ve výchozím nastavení používá znak ~ (tilde) jako ovládací prvek. Příkaz ~. uzavírá otevřené spojení a vrací vás zpět do terminálu. (Ovládací sekvence lze zadávat pouze na nové řádce.) Příkaz ~? zobrazí úplný seznam dostupných příkazů v této relaci. Mějte na paměti, že pro zadání znaku ~ na mezinárodních klávesnicích může být potřeba stisknout klávesu ~ dvakrát.

Proč vůbec k zavěšeným relacím dochází? V dobách vzniku internetu počítače málokdy měnily své místo. Když používáte notebooky a přepínáte mezi různými sítěmi WiFi s IPv4, vaše IP adresa se mění. Protože SSH spoléhá na TCP spojení, která se zase spoléhají na koncový bod se stabilní IP adresou, pokaždé, když se přepnete mezi sítěmi, ztrácí vaše SSH spojení deskriptor soketu a ve skutečnosti se ztrácí sama. Když se změní vaše IP adresa, vaší síťové vrstvě trvá nějaký čas, než zjistí ztrátu deskriptoru. Když nastanou síťové potíže, nechceme, aby jeden z uzlů v TCP spojení přerušil příliš brzy. Proto se protokol pokusí znovu přenést data ještě několikrát, než se nakonec vzdá. Mezitím ve vašem terminálu relace bude vypadat jako zamrznutá. IPv6 přidává několik funkcí souvisejících s mobilitou, které umožňují zařízení udržet domácí adresu při změně sítě. Možná, že to jednoho dne přestane být tak vážným problémem.

Jak udržet trvalý terminál otevřený na vzdáleném uzlu

Existují dva různé přístupy k tomu, jak udržet spojení při přepínání mezi různými sítěmi nebo při přání se na chvíli odpojit.

1. Využít Mosh nebo Eternal Terminal

Pokud skutečně potřebujete spojení, které se nepřeruší, i když přepínáte mezi sítěmi, použijte mobilní shell Mosh. Je to zabezpečený shell, který nejprve použije SSH handshake a poté přepne na svou vlastní šifrovanou linku po celou dobu relace. Tak Mosh vytváří oddělený, velmi odolný a bezpečný kanál, který je schopen vydržet přerušení internetového připojení, změnu IP adresy vašeho notebooku, vážné síťové poruchy a mnohem více, a to vše díky magii UDP spojení a také použitému Mosh synchronizačnímu protokolu.

Pro použití Mosh si jej musíte nainstalovat jak na klienta, tak na server, a otevřít porty 60000-61000 pro bezkontextový UDP traffic k vašemu vzdálenému hostiteli. Následně stačí použít mosh user@server.

Mosh pracuje na úrovni obrazovek a stisků kláves, což mu dává řadu výhod oproti přenosu binárních toků standardního vstupu a výstupu mezi klientem a serverem SSH. Pokud potřebujeme synchronizovat pouze obrazovky a stisky kláves, pak je obnovení přerušeného spojení mnohem jednodušší. Kdežto SSH bude bufferovat a posílat vše, co se stalo, Mosh stačí bufferovat stisky kláves a synchronizovat poslední snímek okna terminálu s klientem.

2. Používejte tmux

Pokud se chcete „připojit a odpojit, jak se vám zlíbí“ a udržet relaci terminálu na vzdáleném uzlu, využijte terminálový multiplexor tmux. Miluji tmux a neustále ho používám. Pokud vaše SSH spojení selhalo, stačí se znovu připojit a zadat tmux attach. Navíc má úžasné funkce, jako jsou vnitřní záložky a panely, podobné záložkám v terminálu iOS, a možnost sdílet terminály s ostatními.

Někteří si rádi vylepšují svůj tmux pomocí Byobu, balíčku, který výrazně zlepšuje použitelnost tmux a přidává spoustu klávesových zkratek. Byobu je součástí Ubuntu a snadno se instaluje na Mac pomocí Homebrew.

Sdílení vzdálené relace terminálu s přítelem

Někdy, když ladíte složité problémy na svých serverech, může se objevit touha rozdělit SSH relaci s někým, kdo není v jedné místnosti s vámi. Tmux je k tomu ideální! Stačí udělat jen několik kroků:

  1. Ujistěte se, že tmux je nainstalován na vašem bastionovém uzlu nebo na jakémkoli serveru, se kterým plánujete pracovat.
  2. Oba se budete muset připojit přes SSH k zařízení, používající jeden účet.
  3. Jeden z vás by měl spustit tmux, aby zahájil tmux relaci.
  4. Druhý by měl spustit tmux attach.
  5. Voila! Máte společný terminál.

Pokud máte zájem o sofistikovanější víceuživatelské tmux relace, vyzkoušejte tmate, což je fork tmux, který výrazně zjednodušuje společné terminálové relace.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster