Aquest article conté les nostres pràctiques recomanades per utilitzar SSH de manera més eficaç. En ell aprendràs a:
- Afegiu un segon factor a l'inici de sessió SSH
- Utilitzeu el reenviament d'agents de manera segura
- Tanqueu la sessió d'una sessió SSH interrompuda
- Manteniu obert un terminal persistent
- Comparteix una sessió de terminal remota amb un amic (sense Zoom!)
Afegiu un segon factor al vostre SSH
Podeu afegir un segon factor d'autenticació a les vostres connexions SSH de cinc maneres diferents:
- Actualitzeu el vostre OpenSSH i utilitzeu la clau de xifratge. El febrer de 2020, OpenSSH va afegir suport per a les claus de xifratge FIDO U2F (Universal Second Factor). Aquesta és una gran característica nova, però hi ha una advertència: només els clients i servidors que s'han actualitzat a OpenSSH 8.2 i superior podran utilitzar claus de xifratge, ja que l'actualització de febrer introdueix nous tipus de clau per a ells. Equip
ssh –Vpodeu comprovar la versió del client de SSH i la versió del servidor amb l'ordrenc [servername] 22
Es van afegir dos nous tipus de claus a la versió de febrer: ecdsa-sk i ed25519-sk (juntament amb els certificats corresponents). Per generar un fitxer de clau, només cal que introduïu la vostra clau de xifratge i executeu l'ordre:$ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_skGenerarà claus públiques i privades i les associarà al vostre dispositiu U2F. El treball de la clau secreta al dispositiu U2F és desxifrar el descriptor de clau secreta al disc quan la clau de xifratge està activada.
A més, com a factor secundari, podeu proporcionar una frase de contrasenya per a les vostres claus.
La clau resident és un altre tipus de generació de claus -sk compatible amb OpenSSH. Amb aquest enfocament, el mànec s'emmagatzema al dispositiu U2F i us permet tenir-lo amb la clau de xifratge quan sigui necessari. Podeu crear una clau resident amb l'ordre:
$ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_skA continuació, per tornar a posar el mànec a la memòria del nou dispositiu, enganxeu la clau de xifratge i executeu l'ordre:
$ ssh-add -KQuan us connecteu a l'amfitrió, encara haureu d'activar la clau de xifratge.
- Utilitzeu PIV+PKCS11 i Yubikey. La connexió a dispositius amb versions anteriors de SSHD mitjançant una clau de xifratge requerirà un enfocament diferent. Yubico té una guia sobre com utilitzar U2F+SSH amb PIV/PKCS11. Això no és el mateix que FIDO U2F, i tot i que el mètode funciona, es necessita molta feina per esbrinar quina màgia l'està impulsant.
- Aplica l'agent ssh personalitzat de yubikey-agent. Filippo Valsorda va escriure l'agent SSH per a Yubikeys. És completament nou i conté funcions mínimes.
- Utilitzeu Touch ID i sekey. Sekey és un agent SSH de codi obert que emmagatzema claus privades en un enclavament segur al Mac i permet utilitzar Touch ID per a la funcionalitat d'accés.
- Utilitzeu SSH d'inici de sessió únic. Vaig escriure un tutorial per ajudar-vos a configurar aquest mètode. Un dels avantatges de l'inici de sessió únic a SSH és la capacitat d'aprofitar les polítiques de seguretat del vostre proveïdor d'identitat, inclòs el suport per a l'autenticació multifactor (MFA).
Ús segur del reenviament d'agents
El reenviament de l'agent SHH permet que un host remot accedeixi a l'agent SSH del vostre dispositiu local. Quan utilitzeu SSH amb el reenviament d'agents habilitat (normalment mitjançant ssh -A), hi haurà dos canals a la connexió: la vostra sessió interactiva i el canal per al reenviament de l'agent. A través d'aquest canal, el sòcol Unix creat pel vostre agent SSH local es connecta a l'amfitrió remot. Aquest és un mètode arriscat perquè un usuari amb accés root al dispositiu remot podria accedir al vostre agent SSH local i, potencialment, suplantar-vos la identitat en línia. Si feu servir l'agent SSH estàndard del kit Open SSH, ni tan sols sabreu que això va passar. Tenir una clau U2F (o Sekey) us ajudarà a bloquejar eficaçment qualsevol intent d'utilitzar el vostre agent SSH des de l'exterior.
Fins i tot amb aquesta precaució, és una bona idea utilitzar el reenviament d'agents el menys possible. No l'heu d'utilitzar per a totes les sessions; feu servir el reenviament de l'agent només quan esteu segur que és necessari per a la sessió actual.
Sortida d'una sessió penjada
Una interrupció de la xarxa, programes que es comporten fora de control o una seqüència d'escapada que bloqueja l'entrada del teclat són totes les possibles causes de la finalització d'una sessió SSH.
Hi ha diverses maneres d'acabar una sessió penjada:
- Sortiu automàticament quan la xarxa s'interromp. Heu d'afegir el següent al vostre .ssh/config:
ServerAliveInterval 5 ServerAliveCountMax 1ssh enviarà un ressò a l'amfitrió remot cada segons ServerAliveInterval per comprovar la connexió. Si no reben cap resposta més d'eco ServerAliveCountMax, ssh esgotarà la connexió i sortirà de la sessió.
- Sortir de la sessió. ssh per defecte utilitza el caràcter ~ (tilde) com a caràcter de control. Equip~. tanca la connexió oberta i us retorna al terminal. (Les seqüències d'escapament només es poden introduir en una línia nova.) El ~? mostrarà una llista completa de les ordres disponibles en aquesta sessió. Tingueu en compte que per escriure el caràcter ~ als teclats internacionals, és possible que hàgiu de prémer la tecla ~ dues vegades.
Per què es produeixen sessions congelades? Quan es va crear Internet, els ordinadors poques vegades es desplaçaven d'un lloc a un altre. Quan utilitzeu ordinadors portàtils i canvieu entre diverses xarxes WiFi IPv4, la vostra adreça IP canvia. Atès que SSH es basa en connexions TCP, que al seu torn es basen en un punt final amb una adreça IP estable, sempre que canvieu entre xarxes, les vostres connexions SSH perden el controlador de socket i es perden de manera efectiva. Quan la vostra adreça IP canvia, la vostra pila de xarxa necessitarà temps per detectar la pèrdua del controlador. Quan es produeixen problemes de xarxa, no volem que un dels nodes de la connexió TCP l'acabi massa aviat. Per tant, el protocol intentarà tornar a enviar les dades diverses vegades més abans de renunciar finalment. Mentrestant, al teu terminal la sessió apareixerà congelada. IPv6 afegeix diverses funcions relacionades amb la mobilitat que permeten que un dispositiu mantingui la seva adreça de casa mentre canvia de xarxa. Potser algun dia això no serà un problema.
Com mantenir obert un terminal persistent en un host remot
Hi ha dos enfocaments diferents sobre com mantenir la connexió quan et mous entre xarxes diferents o vols desconnectar-te durant un temps.
1. Aprofita o
Si realment necessiteu una connexió que no s'interrompi fins i tot quan canvieu d'una xarxa a una altra, utilitzeu l'intèrpret d'ordres mòbils de Mosh. Es tracta d'un intèrpret d'ordres segur que primer utilitza l'enllaç SSH i després canvia al seu propi canal xifrat durant la sessió. Així és com Mosh crea un canal separat, molt estable i segur que pot suportar interrupcions d'Internet, un canvi en l'adreça IP del vostre ordinador portàtil, interrupcions greus de la xarxa i molt més, i tot això gràcies a la màgia de les connexions UDP, també com el Mosh el protocol de sincronització.
Per utilitzar Mosh, haureu d'instal·lar-lo tant al client com al servidor i obrir els ports 60000-61000 per al trànsit UPD no connectat al vostre host remot. En el futur, per connectar-lo serà suficient per utilitzar-lo mosh user@server.
Mosh opera a nivell de pantalles i pulsacions de tecles, la qual cosa li dóna una sèrie d'avantatges respecte a l'enviament d'un flux binari d'entrada i sortida estàndard entre el client i el servidor SSH. Si només necessitem sincronitzar pantalles i pulsacions de tecles, restaurar una connexió trencada més tard serà molt més fàcil. Tot i que SSH emmagatzemarà i enviarà tot el que ha passat, Mosh només necessita emmagatzemar les pulsacions de tecles i sincronitzar l'últim fotograma de la finestra del terminal amb el client.
2. Utilitzeu tmux
Si voleu "anar i venir com vulgueu" i mantenir una sessió de terminal en un host remot, feu servir tmux. M'encanta tmux i l'utilitzo tot el temps. Si la vostra connexió SSH s'interromp, per tornar a la vostra sessió de tmux només heu de tornar a connectar-vos i entrar tmux attach. A més, té funcions tan meravelloses com pestanyes i panells intraterminals, similars a les pestanyes del terminal iOS, i la possibilitat de compartir terminals amb altres.
A algunes persones els agrada millorar el seu tmux amb Byobu, un paquet que millora molt la usabilitat de tmux i li afegeix moltes dreceres de teclat. Byobu ve inclòs amb Ubuntu i és fàcil d'instal·lar a Mac mitjançant Homebrew.
Compartint una sessió de terminal remota amb un amic
De vegades, quan depureu problemes complexos als vostres servidors, és possible que vulgueu compartir una sessió SSH amb algú que no estigui a la mateixa habitació que vosaltres. tmux és perfecte per a aquesta tasca! Només calen uns quants passos:
- Assegureu-vos que tmux estigui instal·lat al vostre node bastió o a qualsevol servidor amb el qual treballareu.
- Tots dos haureu de fer un SSH al dispositiu amb el mateix compte.
- Un de vosaltres ha d'estar executant tmux per iniciar una sessió de tmux.
- L'altre hauria d'executar tmux attach
- Voila! Tens un terminal compartit.
Si voleu sessions tmux multiusuari més sofisticades, proveu tmate, una bifurcació de tmux que facilita molt les sessions de terminal compartides.
Font: www.habr.com
