Mici trucuri SSH

Acest articol conține cele mai bune practici pentru utilizarea SSH mai eficientă. În ea vei învăța cum să:

  • Adăugați un al doilea factor la autentificarea SSH
  • Utilizați în siguranță redirecționarea agentului
  • Deconectați-vă de la o sesiune SSH întreruptă
  • Păstrați un terminal persistent deschis
  • Partajați o sesiune de terminal la distanță cu un prieten (fără Zoom!)

Adăugarea unui al doilea factor la SSH

Puteți adăuga un al doilea factor de autentificare la conexiunile dvs. SSH în cinci moduri diferite:

  1. Actualizați-vă OpenSSH și utilizați cheia de criptare. În februarie 2020, OpenSSH a adăugat suport pentru cheile de criptare FIDO U2F (Universal Second Factor). Aceasta este o caracteristică nouă grozavă, dar există o avertizare: numai acei clienți și servere care s-au actualizat la OpenSSH 8.2 și o versiune ulterioară vor putea folosi chei de criptare, deoarece actualizarea din februarie introduce noi tipuri de chei pentru ei. Echipă ssh –V puteți verifica versiunea client a SSH și versiunea server cu comanda nc [servername] 22

    Două noi tipuri de chei au fost adăugate versiunii din februarie - ecdsa-sk și ed25519-sk (împreună cu certificatele corespunzătoare). Pentru a genera un fișier cheie, trebuie doar să introduceți cheia de criptare și să rulați comanda:
    $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk

    Va genera chei publice și private și le va asocia cu dispozitivul dvs. U2F. Sarcina cheii secrete de pe dispozitivul U2F este de a decripta descriptorul cheii secrete de pe disc atunci când cheia de criptare este activată.

    În plus, ca factor secundar, puteți furniza o expresie de acces pentru cheile dvs.

    Cheia rezidentă este un alt tip de generare de chei -sk acceptată de OpenSSH. Cu această abordare, mânerul este stocat pe dispozitivul U2F și vă permite să îl aveți cu cheia de criptare atunci când este necesar. Puteți crea o cheie rezidentă cu comanda:

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

    Apoi, pentru a pune mânerul înapoi în memorie pe noul dispozitiv, lipiți cheia de criptare și executați comanda:

    $ ssh-add -K

    Când vă conectați la gazdă, va trebui totuși să activați cheia de criptare.

  2. Utilizați PIV+PKCS11 și Yubikey. Conectarea la dispozitive cu versiuni anterioare de SSHD folosind o cheie de criptare va necesita o abordare diferită. Yubico are un ghid despre utilizarea U2F+SSH cu PIV/PKCS11. Acesta nu este același lucru cu FIDO U2F și, deși metoda funcționează, este nevoie de multă muncă pentru a afla ce magie o conduce.
  3. Aplicați agent ssh personalizat yubikey-agent. Filippo Valsorda a scris agentul SSH pentru Yubikeys. Este complet nou și conține caracteristici minime.
  4. Utilizați Touch ID și sekey. Sekey este un agent SSH open source care stochează cheile private într-o enclavă securizată pe Mac și permite utilizarea Touch ID pentru funcționalitatea de acces.
  5. Utilizați Single Sign On SSH. Am scris un tutorial pentru a vă ajuta să configurați această metodă. Unul dintre avantajele semnării unice pe SSH este capacitatea de a utiliza politicile de securitate ale furnizorului dvs. de identitate - inclusiv suport pentru autentificarea multi-factor (MFA).

Utilizarea în siguranță a redirecționării agentului

Redirecționarea agentului SHH permite unei gazde la distanță să acceseze agentul SSH al dispozitivului local. Când utilizați SSH cu redirecționarea agentului activată (de obicei prin ssh -A), vor exista două canale pe conexiune: sesiunea dvs. interactivă și canalul pentru redirecționarea agentului. Prin acest canal, socket-ul Unix creat de agentul SSH local se conectează la gazda de la distanță. Aceasta este o metodă riscantă, deoarece un utilizator cu acces root pe dispozitivul de la distanță ar putea obține acces la agentul SSH local și poate uzurpa identitatea dvs. online. Folosind agentul SSH standard din kitul Open SSH, nici nu veți ști că acest lucru s-a întâmplat. A avea o cheie U2F (sau Sekey) vă va ajuta să blocați în mod eficient orice încercare de a utiliza agentul SSH din exterior.

Chiar și cu această precauție, este o idee bună să folosiți cât mai puțin posibil redirecționarea agentului. Nu ar trebui să-l utilizați în fiecare sesiune - folosiți redirecționarea agentului numai atunci când sunteți sigur că este necesar pentru sesiunea curentă.

Ieșirea dintr-o sesiune suspendată

O întrerupere a rețelei, programe care se comportă scăpat de sub control sau o secvență de evadare care blochează introducerea de la tastatură sunt toate cauzele posibile ale încheierii unei sesiuni SSH.

Există mai multe moduri de a încheia o sesiune suspendată:

  1. Ieșiți automat când rețeaua este întreruptă. Trebuie să adăugați următoarele la .ssh/config:
    ServerAliveInterval 5
    ServerAliveCountMax 1

    ssh va trimite un ecou gazdei la distanță la fiecare secundă ServerAliveInterval pentru a verifica conexiunea. Dacă mai multe ecouri ServerAliveCountMax nu primesc un răspuns, ssh va opri conexiunea și va ieși din sesiune.

  2. Ieșiți din sesiune. ssh folosește în mod implicit caracterul ~ (tilde) ca caracter de control. Echipa~. închide conexiunea deschisă și te întoarce înapoi la terminal. (Secvențele de evacuare pot fi introduse numai pe o linie nouă.) ~? va afișa o listă completă de comenzi disponibile în această sesiune. Vă rugăm să rețineți că pentru a tasta caracterul ~ pe tastaturile internaționale, poate fi necesar să apăsați tasta ~ de două ori.

De ce au loc sesiunile înghețate? Când a fost creat internetul, computerele rareori se mutau dintr-un loc în altul. Când utilizați laptopuri și comutați între mai multe rețele WiFi IPv4, adresa dvs. IP se schimbă. Deoarece SSH se bazează pe conexiuni TCP, care se bazează, la rândul lor, pe un punct final cu o adresă IP stabilă, ori de câte ori comutați între rețele, conexiunile dvs. SSH ratează mânerul socketului și se pierd efectiv de la sine. Când adresa dvs. IP se schimbă, este nevoie de timp pentru ca stiva dvs. de rețea să detecteze pierderea mânerului. Când apar probleme de rețea, nu dorim ca unul dintre nodurile de pe conexiunea TCP să îl încheie prea devreme. Prin urmare, protocolul va încerca să retrimită datele de mai multe ori înainte de a renunța definitiv. Între timp, în terminalul dvs. sesiunea va apărea înghețată. IPv6 adaugă mai multe caracteristici legate de mobilitate care permit unui dispozitiv să-și mențină adresa de acasă în timp ce schimbă rețelele. Poate că într-o zi aceasta nu va fi o astfel de problemă.

Cum să păstrați un terminal persistent deschis pe o gazdă la distanță

Există două abordări diferite pentru a vă menține conexiunea atunci când vă deplasați între rețele diferite sau doriți să vă deconectați pentru o perioadă.

1. Profită mosh sau Terminalul etern

Dacă într-adevăr aveți nevoie de o conexiune care nu se întrerupe chiar și atunci când comutați între rețele, utilizați shell-ul mobil Mosh. Acesta este un shell securizat care utilizează mai întâi strângerea de mână SSH și apoi comută la propriul canal criptat pe durata sesiunii. Acesta este modul în care Mosh creează un canal separat, foarte durabil și securizat, care poate rezista la întreruperile de internet, la schimbarea adresei IP a laptopului, la întreruperi serioase de rețea și multe altele, și toate acestea datorită magiei conexiunilor UDP, precum și Mosh protocolul de sincronizare.

Pentru a utiliza Mosh, va trebui să îl instalați atât pe client, cât și pe server și să deschideți porturile 60000-61000 pentru traficul UPD neconectat către gazda dvs. la distanță. În viitor, pentru a vă conecta va fi suficient să îl utilizați mosh user@server.

Mosh operează la nivel de ecrane și apăsări de taste, ceea ce îi oferă o serie de avantaje față de trimiterea unui flux binar de intrare și ieșire standard între client și serverul SSH. Dacă trebuie doar să sincronizăm ecranele și apăsările de taste, atunci restabilirea unei conexiuni întrerupte mai târziu devine mult mai ușoară. În timp ce SSH va salva și trimite tot ce s-a întâmplat, Mosh trebuie doar să tamponeze apăsările de taste și să sincronizeze ultimul cadru al ferestrei terminalului cu clientul.

2. Folosiți tmux

Dacă doriți să „veniți și să plecați după cum doriți” și să mențineți o sesiune de terminal pe o gazdă la distanță, utilizați multiplexor terminal tmux. Îmi place tmux și îl folosesc tot timpul. Dacă conexiunea SSH este întreruptă, atunci pentru a reveni la sesiunea tmux trebuie doar să vă reconectați și să intrați tmux attach. În plus, are caracteristici atât de minunate precum file și panouri intra-terminale, similare cu filele din terminalul iOS și capacitatea de a partaja terminale cu alții.

Unora le place să-și îmbunătățească tmux-ul cu Byobu, un pachet care îmbunătățește semnificativ utilizabilitatea tmux și adaugă multe scurtături de la tastatură. Byobu vine cu Ubuntuși este ușor de instalat pe Mac prin Homebrew.

Partajarea unei sesiuni de terminal la distanță cu un prieten

Uneori, atunci când depanați probleme complexe de pe serverele dvs., este posibil să doriți să partajați o sesiune SSH cu cineva care nu se află în aceeași cameră cu tine. tmux este perfect pentru această sarcină! Durează doar câțiva pași:

  1. Asigurați-vă că tmux este instalat pe nodul bastion sau pe orice server cu care veți lucra.
  2. Va trebui amândoi să faceți SSH pe dispozitiv folosind același cont.
  3. Unul dintre voi trebuie să ruleze tmux pentru a începe o sesiune tmux.
  4. Celălalt ar trebui să ruleze tmux attach
  5. Voila! Aveți un terminal comun.

Dacă doriți sesiuni tmux mai sofisticate pentru mai mulți utilizatori, încercați tmate, un furk de tmux care face sesiunile de terminal partajate mult mai ușoare.

Sursa: www.habr.com

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster