U ovom članku prikupljene su naše najbolje tehnike za efikasnije korišćenje SSH. Iz njega ćete saznati kako:
- Dodati drugu faktor za prijavu na SSH
- Sigurno koristiti agent forwarding
- Izaći iz zalutale SSH sesije
- Održati stalni terminal otvorenim
- Deliti udaljenu sesiju terminala s prijateljem (bez Zoom-a!)
Dodavanje drugog faktora za svoj SSH
Drugi faktor autentifikacije za svoje SSH veze može se dodati na pet različitih načina:
- Ažurirati svoj OpenSSH i koristiti enkripcijski ključ. U februaru 2020. godine OpenSSH je dodao podršku za enkripcijske ključeve FIDO U2F (Universal Second Factor). Ovo je sjajna nova funkcija, ali postoji problem: samo klijenti i serveri koji su ažurirani na verziju OpenSSH 8.2 i više moći će koristiti enkripcijske ključeve, jer februarsko ažuriranje uvodi nove tipove ključeva. Komandom
ssh –Vmožete proveriti verziju klijenta SSH, dok se serverna verzija proverava komandomnc [servername] 22
U februarsku verziju dodana su dva nova tipa ključeva — ecdsa-sk i ed25519-sk (uz odgovarajuće sertifikate). Za generisanje datoteke ključa dovoljno je uneti svoj enkripcijski ključ i pokrenuti komandu:$ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_skOna će kreirati javni i tajni ključ i povezati ih sa vašim U2F uređajem. Zadatak tajnog ključa na U2F uređaju je dešifrovanje tajnog deskriptora ključa na disku kada je aktiviran enkripcijski ključ.
Pored toga, kao sekundarni faktor možete pružiti kodnu frazu za svoje ključeve.
Ključ-rezident je još jedan podržani OpenSSH tip generisanja -sk-ključeva. Na ovaj način, deskriptor se čuva na U2F uređaju i omogućava vam da ga imate sa enkripcijskim ključem kada zatreba. Ključ-rezident možete kreirati komandom:
$ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_skZatim, za vraćanje deskriptora nazad u memoriju na novom uređaju, umetnite enkripcijski ključ i pokrenite komandu:
$ ssh-add -KPrilikom povezivanja sa hostom, još uvek ćete morati aktivirati enkripcijski ključ.
- Iskoristite PIV+PKCS11 i Yubikey. Za povezivanje sa uređajima sa starijim verzijama SSHD uz enkripcijski ključ biće potreban drugačiji pristup. Na Yubico postoji vodič za korišćenje U2F+SSH sa PIV/PKCS11 (na engleskom). Ovo nije isto što i FIDO U2F, i iako metoda funkcioniše, zahteva mnogo truda da se razjasni koja magija njome upravlja.
- Primijenite korisnički yubikey-agent ssh-agent. Filippo Valsorda napisao je SSH agent za Yubikey. Potpuno je nov i sadrži minimum funkcija.
- Koristite Touch ID i sekey. Sekey je SSH agent s otvorenim izvorom koji pohranjuje tajne ključeve u zaštićenom enclaveu Mac-a i omogućuje korištenje Touch ID za pristup.
- Koristite Single Sign On SSH. Napisao sam vodič za pomoć u postavljanju ovog načina (eng). Jedna od prednosti single sign on SSH je mogućnost korištenja sigurnosnih politika vašeg davatelja identiteta — uključujući podršku za višefaktorsku autentifikaciju (MFA).
Sigurna upotreba agent forwarding-a
U SSH agent forwarding omogućava udaljenom čvoru pristup SSH agentu vašeg lokalnog uređaja. Kada koristite SSH s uključenim agent forwarding-om (obično preko ssh -A), u vezi će biti dva kanala: vaša interaktivna sesija i kanal za agent forwarding. Kroz ovaj kanal Unix socket, koji kreira vaš lokalni SSH agent, povezuje se s udaljenim čvorom. Ovo je rizična metoda, jer korisnik s root pristupom na udaljenom uređaju može pristupiti vašem lokalnom SSH agentu i potencijalno se predstavljati u mreži umjesto vas. Koristeći standardni SSH agent iz Open SSH paketa, čak nećete ni primijetiti da se to dogodilo. Imati U2F ključ (ili Sekey) pomoći će vam da učinkovito blokirate sve pokušaje da iskoriste vaš SSH agent izvana.
Čak i s tom mjerom opreza, bila bi dobra ideja koristiti agent forwarding što je rjeđe moguće. Ne trebate ga koristiti na svakoj sesiji — koristite agent forwarding samo kada ste sigurni u njegovu potrebu za trenutnu sesiju.
Izlazak iz zamrznute sesije
Prekid mreže, nekontrolirano ponašanje programa ili kontrolna sekvenca koja blokira unos s tipkovnice — sve su to mogući uzroci prekida SSH sesije.
Zamrznutu sesiju možete prekinuti na nekoliko načina:
- Automatski izađite pri prekidu mreže. U svoj .ssh/config trebate dodati sljedeće:
ServerAliveInterval 5 ServerAliveCountMax 1ssh će slati echo udaljenom čvoru svakih ServerAliveInterval sekundi kako bi provjerio vezu. Ako više od ServerAliveCountMax echa ne dobije odgovor, ssh će prekinuti vezu zbog isteka vremena i izaći iz sesije.
- Izađite iz sesije. ssh po defaultu koristi simbol ~ (tilde) kao kontrolni znak. Komanda ~. zatvara otvorenu vezu i vraća vas natrag u terminal. (Kontrolne sekvence mogu se unositi samo s novog reda.) Komanda ~? prikazuje potpuni popis dostupnih komandi u ovoj sesiji. Imajte na umu da, da biste unijeli simbol ~ na međunarodnim tipkovnicama, može biti potrebno pritisnuti tipku ~ dva puta.
Zašto uopće dolazi do zamrznutih sesija? U vrijeme nastanka interneta računala rijetko su se kretala s mjesta na mjesto. Kada koristite laptop i prebacujete se između različitih IPv4 WiFi mreža, vaša IP adresa se mijenja. Budući da SSH ovisi o TCP vezama, a one, zauzvrat, ovise o krajnjoj točki s stabilnom IP adresom, svaki put kada se prebacite između mreža, vaša SSH veza gubi descriptor socket-a i zapravo se gubi. Kada se vaša IP adresa promijeni, vašem mrežnom stogu treba vremena da otkrije gubitak deskriptora. Kada se jave mrežni problemi, ne želimo da jedan od čvorova u TCP vezi prekine vezu prerano. Zato protokol pokušava ponovo poslati podatke još nekoliko puta prije nego što konačno odustane. U međuvremenu, u vašem terminalu sesija će izgledati zamrznuto. IPv6 dodaje nekoliko povezanih s mobilnošću značajki koje omogućuju uređaju da zadrži svoju domaću adresu prilikom promjene mreže. Možda će to jednog dana prestati biti tako veliki problem.
Kako održati stalni terminal otvorenim na udaljenom čvoru
Postoje dva različita pristupa kako održati vezu prilikom prelaska između različitih mreža ili kada želite malo isključiti.
1. Iskoristite ili
Ako vam je zaista potrebna veza koja neće dropati čak i kada prebacujete mreže, koristite mobilnu konzolu Mosh. To je sigurnosna konzola koja prvo koristi SSH rukovanje, a zatim prelazi na vlastiti kriptirani kanal tijekom cijelog trajanja sesije. Tako Mosh stvara odvojen, vrlo otporan i siguran kanal koji može izdržati prekide interneta, promjene IP adrese vašeg laptopa, ozbiljne kvarove mreže i mnogo više, a sve to zahvaljujući čaroliji UDP veza, kao i protokolu sinkronizacije koji koristi Mosh.
Za korištenje Mosha trebate ga instalirati kako na klijent, tako i na server, i otvoriti portove 60000-61000 za neuređeni UPD promet do vašeg udaljenog hosta. U budućnosti za vezu će vam biti dovoljno koristiti mosh user@server.
Mosh operira na razini ekrana i tipkovničkih pritisaka, što mu daje niz prednosti u odnosu na prosljeđivanje binarnog toka standardnog unosa i izlaza između klijenta i SSH servera. Ako nam je potrebno sinkronizirati samo ekrane i pritiske tipki, tada je kasnije vraćanje prekinute veze puno jednostavnije. Dok će SSH buferirati i slati sve što se dogodilo, Mosh je dovoljno da buferira pritiske tipki i sinkronizira posljednji okvir prozora terminala s klijentom.
2. Koristite tmux
Ako želite "dolaziti i odlaziti kad god želite" i zadržati sesiju terminala na udaljenom čvoru, iskoristite tmux. Obožavam tmux i koristim ga stalno. Ako je vaša SSH veza prekinuta, samo se ponovno povežite i unesite tmux attach. Osim toga, pruža prekrasne značajke poput unutar-terminalnih kartica i panela, sličnih karticama u iOS terminalu, i mogućnost dijeljenja terminala s drugima.
Neki vole uljepšati svoj tmux pomoću Byobu, paketa koji značajno poboljšava korisničko iskustvo tmux-a i dodaje mnoge prečace. Byobu dolazi s Ubuntu-om, a lako se instalira na Mac putem Homebrew-a.
Dijeljenje udaljene sesije terminala s prijateljem
Ponekad, prilikom otklanjanja složenih problema na vašim serverima, može se javiti želja za dijeljenjem SSH sesije s nekim tko nije s vama u sobi. tmux je savršeno rješenje za takve situacije! Sve što trebate je napraviti nekoliko jednostavnih koraka:
- Provjerite je li tmux instaliran na vašem bastion čvoru ili na bilo kojem serveru s kojim namjeravate raditi.
- Oboje se morate povezati putem SSH na uređaj, koristeći jedan račun.
- Jedan od vas treba pokrenuti tmux kako bi započeo tmux sesiju.
- Drugi treba pokrenuti tmux attach
- Tada! Imate zajednički terminal.
Ako želite više sofisticirane višekorisničke tmux sesije, isprobajte tmate, to je fork tmuxa koji znatno olakšava zajedničke terminalske sesije.
Izvor: habr.com
