Malé triky SSH

V tomto článku sú zhromaždené naše najlepšie tipy na efektívnejšie používanie SSH. Dozviete sa, ako:

  • Pridať druhý faktor k loginu SSH
  • Bezpečne používať agent forwarding
  • Odísť z visiacich SSH relácií
  • Udržiavať stále otvorený terminál
  • Zdieľať vzdialenú terminálovú reláciu s priateľom (bez Zoomu!)

Pridanie druhého faktora k svojmu SSH

Druhý faktor autentizácie k svojim SSH pripojeniam je možné pridať piatimi rôznymi spôsobmi:

  1. Aktualizujte svoj OpenSSH a použite šifrovací kľúč. V februári 2020 bolo do OpenSSH pridané podporovanie šifrovacích kľúčov FIDO U2F (Universal Second Factor). Je to skvelá nová funkcia, ale je tu háčik: len tí klienti a servery, ktoré sa aktualizovali na verziu OpenSSH 8.2 a vyššie, budú môcť používať šifrovacie kľúče, pretože februárová aktualizácia zavádza pre nich nové typy kľúčov. Pomocou príkazu ssh –V môžete skontrolovať klientsku verziu SSH, a serverovú — pomocou príkazu nc [servername] 22

    V februárovej verzii boli pridané dva nové typy kľúčov — ecdsa-sk a ed25519-sk (spolu s príslušnými certifikátmi). Na generovanie súboru kľúča stačí vložiť svoj šifrovací kľúč a spustiť príkaz:
    $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk

    Vytvorí to verejné a tajné kľúče a prepojí ich s vaším U2F zariadením. Úlohou tajného kľúča na U2F zariadení je dešifrovať tajný popisovač kľúča na disku pri aktivovanom šifrovacom kľúči.

    Okrem toho ako sekundárny faktor môžete poskytnúť kódovú frázu pre svoje kľúče.

    Kľúč-resident je ďalší podporovaný typ generovania -sk-kľúčov v OpenSSH. Pri tomto prístupe je popisovač uložený na U2F zariadení a umožňuje vám ho mať pri šifrovacom kľúči, keď to bude potrebné. Vytvoriť kľúč-resident môžete príkazom:

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

    Následne, na vrátenie popisovača späť do pamäte na novom zariadení, vložte šifrovací kľúč a spustite príkaz:

    $ ssh-add -K

    Pri pripojení k hostiteľovi budete stále musieť aktivovať šifrovací kľúč.

  2. Použiť PIV+PKCS11 a Yubikey. Na pripojenie k zariadeniam s staršími verziami SSHD pomocou šifrovacieho kľúča bude potrebný iný prístup. Na Yubico je sprievodca používaním U2F+SSH s PIV/PKCS11 (angl.). Nie je to to isté ako FIDO U2F, a hoci metóda funguje, vyžaduje si veľké úsilie zistiť, aké čaro za tým stojí.
  3. Aplikujte užívateľský yubikey-agent ssh-agent. Filippo Valsorda napísal SSH agenta pre Yubikeys. Je to úplne nový a obsahuje minimálne funkcie.
  4. Použite Touch ID a sekey. Sekey je SSH agent s otvoreným zdrojovým kódom, ktorý uchováva tajné kľúče v zabezpečenom enclave Macu a umožňuje používať Touch ID na prístup.
  5. Použite Single Sign On SSH. Napísal som tutoriál na pomoc pri nastavení tohto spôsobu (angl). Jednou z výhod single sign on SSH je možnosť uplatniť bezpečnostné politiky vášho poskytovateľa certifikátov — vrátane podpory viacfaktorovej autentizácie (MFA).

Bezpečné používanie agent forwarding

V SHH agent forwarding umožňuje vzdialenému uzlu prístup k SSH agentovi vášho lokálneho zariadenia. Keď používate SSH so zapnutým agent forwarding (zvyčajne cez ssh -A), v spojení budú dva kanály: vaša interaktívna relácia a kanál pre agent forwarding. Skrze tento kanál sa Unix-socket, vytvorený vaším lokálnym SSH-agentom, spojí so vzdialeným uzlom. Je to riskantná metóda, pretože používateľ s root prístupom na vzdialenom zariadení môže získať prístup k vášmu lokálnemu SSH-agentovi a potenciálne sa vydávať za vás v sieti. Pri použití štandardného SSH-agenta z balíka Open SSH ani nezistíte, že sa to stalo. Držanie U2F kľúča (alebo Sekey) vám pomôže efektívne zablokovať akékoľvek pokusy o využitie vášho SSH agenta zvonku.

Aj s touto opatrením bude dobrým nápadom používať agent forwarding čo najriedšie. Nepoužívajte ho na každej relácii — používajte agent forwarding len keď ste si istí jeho potrebou pre aktuálnu reláciu.

Odhlásenie zo zamrznutej relácie

Prerušenie siete, nekontrolovateľné správanie programov, alebo ovládacia sekvencia, ktorá zablokuje vstup z klávesnice — to všetko sú možné príčiny roztrhnutia SSH relácie.

Zamrznutú reláciu môžete ukončiť niekoľkými spôsobmi:

  1. Automaticky sa odhlásiť pri prerušení siete. Do svojho .ssh/config musíte pridať nasledovné:
    ServerAliveInterval 5
    ServerAliveCountMax 1

    ssh bude posielať echo vzdialenému uzlu každých ServerAliveInterval sekúnd na kontrolu pripojenia. Ak viac ako ServerAliveCountMax echa nedostanú odpoveď, ssh ukončí spojenie z dôvodu timeoutu a odhlási sa z relácie.

  2. Vyskočiť zo relácie. ssh predvolene používa znak ~ (vlnovka) ako ovládací. Príkaz ~. uzavrie otvorené spojenie a privedie vás späť do terminálu. (Ovládacie sekvencie je možné zadávať iba z nového riadka.) Príkaz ~? vypíše úplný zoznam dostupných príkazov v tejto relácii. Majte na pamäti, že na medzinárodných klávesniciach môže byť potrebné stlačiť kláves ~ dvakrát, aby ste zadali znak ~.

Prečo vlastne vznikajú zamrznuté relácie? V časoch vzniku internetu sa počítače zriedka pohybovali z miesta na miesto. Keď používate notebooky a prepínate medzi niekoľkými IPv4 sieťami WiFi, vaša IP adresa sa mení. Keďže SSH sa spolieha na TCP spojenia, a tie naopak spoléhajú na koncovú časť so stabilnou IP adresou, zakaždým, keď prepnete medzi sieťami, vaše SSH spojenia stratia deskriptor soketu a fakticky sa stratí. Keď sa zmení vaša IP adresa, vášmu sieťovému zásobníku trvá chvíľu, kým zistí stratu deskriptora. Keď nastanú sieťové problémy, nechceme, aby jeden z uzlov v TCP spojení prerušil spojenie príliš skoro. Preto sa protokol pokúsi znova poslať dáta ešte niekoľkokrát, než nakoniec kapitulovať. Medzitým bude vaša relácia v termináli vyzerať zamrznutá. IPv6 pridáva niekoľko súvisiacich funkcií s mobilitou, ktoré umožňujú zariadeniu udržať domovskú adresu počas zmien siete. Možno, jedného dňa to už nebude taký veľký problém.

Ako udržať nepretržitý terminál otvorený na vzdialenom uzle

Existujú dva rôzne prístupy, ako udržať spojenie pri prechode medzi rôznymi sieťami alebo keď si prajete na chvíľu odpojiť.

1. Využiť Mosh alebo Eternal Terminal

Ak naozaj potrebujete pripojenie, ktoré neprestáva fungovať, aj keď prechádzate medzi sieťami, použite mobilného klienta Mosh. Ide o bezpečného klienta, ktorý najprv použije SSH handshake a potom prejde na svoj vlastný šifrovaný kanál počas celej relácie. Tak Mosh vytvára samostatný, veľmi odolný a zabezpečený kanál, ktorý dokáže zvládnuť prerušenia internetového pripojenia, zmenu IP adresy vášho notebooku, vážne sieťové výpadky a oveľa viac, a to všetko vďaka mágii UDP pripojení, ako aj protokolu synchronizácie Mosh.

Na používanie Mosh budete musieť nainštalovať ho na klienta aj server a otvoriť porty 60000-61000 pre nezabezpečený UDP prenos do vášho vzdialeného hostiteľa. Na ďalšie pripojenie bude stačiť použiť mosh user@server.

Mosh pracuje na úrovni obrazoviek a stlačení kláves, čo mu poskytuje množstvo výhod pred presúvaním binárneho prúdu štandardného vstupu a výstupu medzi klientom a serverom SSH. Ak potrebujeme synchronizovať len obrazovky a stlačenia kláves, neskôr je oveľa jednoduchšie obnoviť prerušené pripojenie. Kým SSH bude bufferovať a posielať všetko, čo sa stalo, Mosh stačí bufferovať iba stlačenia kláves a synchronizovať posledný snímok okna terminálu s klientom.

2. Použiť tmux

Ak chcete mať možnosť „prichádzať a odchádzať, kedy sa vám zachce“ a udržiavať reláciu terminálu na vzdialenom uzle, využite terminálového multiplexora tmux. Milujem tmux a používam ho neustále. Ak sa vaše SSH pripojenie preruší, stačí sa znovu pripojiť a zadať tmux attach. Okrem toho ponúka úžasné funkcie, ako sú vnútorné terminálové záložky a panely, podobne ako záložky v iOS termináli, a možnosť zdieľať terminály s inými.

Niektorí radi vylepšujú svoj tmux pomocou Byobu, balíka, ktorý výrazne zlepšuje použiteľnosť tmux a pridáva mu množstvo klávesových skratiek. Byobu je súčasťou Ubuntu a ľahko sa inštaluje na Mac pomocou Homebrew.

Zdieľanie vzdialenej relácie terminálu s priateľom

Niekedy pri ladení zložitých problémov na vašich serveroch môže vzniknúť túžba zdieľať SSH reláciu s niekým, kto nie je s vami v miestnosti. Tmux je na túto úlohu ideálny! Stačí urobiť len niekoľko krokov:

  1. Uistite sa, že tmux je nainštalovaný na vašom bastionovom uzle, alebo na nejakom serveri, s ktorým sa chystáte pracovať.
  2. Obaja sa musíte pripojiť cez SSH na zariadenie, používajúc jeden účet.
  3. Jeden z vás musí spustiť tmux, aby začal tmux reláciu.
  4. Druhý musí spustiť tmux attach.
  5. A je to! Máte zdieľaný terminál.

Ak sa chcete dozvedieť o sofistikovanejších viacužívateľských tmux reláciách, vyskúšajte tmate, čo je fork tmuxu, ktorý značne zjednodušuje spoločné terminálové relácie.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster