Com afegir claus SSH a Ubuntu 20.04

Configureu un inici de sessió segur sense contrasenya al vostre servidor Ubuntu remot mitjançant claus SSH

SSH és un protocol de xarxa client-servidor segur que ajuda un ordinador client a connectar-se i comunicar-se amb un servidor remot. La connexió SSH garanteix que les ordres que s'escriuen al terminal s'enviïn al servidor remot mitjançant un canal xifrat.

Hi ha dos tipus de mecanismes d'autenticació que s'utilitzen per connectar-se al servidor remot, l'autenticació basada en contrasenya (propens a atacs de força bruta) i l'autenticació basada en claus SSH (que és molt segura).

A l'autenticació basada en clau SSH, es genera un parell de claus a l'ordinador client, anomenat clau pública i clau privada. Una còpia d'aquesta clau pública està disponible al servidor remot. Quan un client envia una sol·licitud de connexió al servidor, el servidor genera una cadena aleatòria i la xifra amb la clau pública. Aquesta cadena només es pot desxifrar mitjançant la clau privada disponible a l'ordinador client. Aquest mètode garanteix que només puguin accedir al servidor els clients que contenen la clau privada.

En aquesta guia, veurem com configurar les claus SSH al servidor Ubuntu 20.04 LTS.

Comproveu si teniu alguna clau SSH existent a l'ordinador

Per comprovar si ja existeix un parell de claus SSH al vostre ordinador, escriviu aquesta ordre al vostre terminal.

ls -l ~/.ssh/id_*.pub

Si torna l'ordre anterior el fitxer o directori no existeix o no s'han trobat coincidències, vol dir que el parell de claus SSH no existeix.

Si teniu un parell de claus SSH existent, podeu utilitzar el mateix parell de claus per accedir a dos servidors remots, o també podeu crear un parell de claus diferent amb un nom diferent. Passem al següent pas i veiem com generar claus SSH per als dos casos.

Creació de claus SSH en un ordinador client

Per generar un nou parell de claus SSH al vostre ordinador, escriviu l'ordre tal com es mostra a continuació.

ssh-keygen

Per defecte, les claus SSH són de 2048 bits. Per a una millor seguretat, si voleu generar claus SSH amb bits més alts, feu servir l'ordre següent.

ssh-keygen -b 4096

Si l'ordre s'executa correctament, apareixerà el missatge següent a la pantalla.

generant un parell de claus rsa pública/privada. Introduïu el fitxer on desar la clau (/home/harshit/.ssh/id_rsa):

Ara, si no teniu cap parell de claus SSH existent a l'ordinador, simplement premeu Entra, però si teniu una clau SSH existent, deseu-la amb un nom de fitxer diferent, tal com es mostra a continuació.

Introduïu el fitxer on desar la clau (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx

Substituïu el xxx al final del nom del fitxer amb un nom adequat, com es mostra a continuació i premeu Entra.

Introduïu el fitxer on desar la clau (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1

La següent sol·licitud us demanarà que introduïu una frase de contrasenya de longitud arbitrària, us garantirà la seguretat de dos nivells al vostre dispositiu.

Introduïu la contrasenya (buida si no hi ha cap frase de contrasenya): torneu a introduir la mateixa frase de contrasenya:

Si introduïu aquesta frase de contrasenya, encara que una persona tingui accés a la vostra clau privada, no podrà accedir al vostre servidor remot sense aquesta frase de contrasenya.

Un cop finalitzat tot el procés, apareixerà el següent missatge a la pantalla.

ssh-keygen -b 4096 Un cop finalitzat tot el procés de generació de claus SSH, apareixerà el missatge següent a la pantalla.

Les claus SSH s'han generat al vostre sistema. Ara és el moment de copiar la clau pública al servidor remot.

Copia la clau pública al servidor Ubuntu remot

El mètode més fàcil i ràpid per copiar la clau pública al servidor remot és utilitzar el ssh-copy-id utilitat. Però si aquesta utilitat no està disponible a la vostra màquina per algun motiu, també podeu utilitzar altres mètodes proporcionats en aquesta secció.

Utilitzant la utilitat ssh-copy-id

El ssh-copy-id La utilitat està disponible per defecte a la vostra màquina Ubuntu, que copia la clau pública del vostre dispositiu al directori adequat de la vostra màquina Ubuntu remota.

Per copiar la clau pública ssh, simplement escriviu l'ordre al vostre terminal, tal com es mostra a continuació.

ssh-copy-id nom d'usuari@nom de l'amfitrió

Substituïu el nom d'usuari i nom d'amfitrió a l'ordre anterior amb el nom d'usuari i el nom d'amfitrió del vostre servidor.

El següent missatge apareixerà al vostre terminal si us connecteu al vostre host per primera vegada, escriviu i premeu Entra.

No es pot establir l'autenticitat de l'amfitrió "172.105.XX.XX (172.105.XX.XX)". L'empremta digital de la clau ECDSA és xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Esteu segur que voleu continuar connectant-vos (sí/no)? 

Ara el ssh-copy-id La utilitat buscarà el fitxer amb el nom id_rsa.pub que conté la clau pública SSH. Un cop finalitzat el procés d'escaneig, us demanarà que introduïu la contrasenya del vostre servidor remot, tal com es mostra a continuació. Escriviu la contrasenya i premeu Entra.

/usr/bin/ssh-copy-id: INFO: s'està intentant iniciar sessió amb les noves claus, per filtrar les que ja estan instal·lades /usr/bin/ssh-copy-id: INFO: 1 clau(s) ) queden per instal·lar -- si se us demana ara és per instal·lar les noves claus [email protected] contrasenya:

Un cop afegida la clau, apareixerà el següent missatge al vostre terminal com a sortida.

Nombre de clau(s) afegida: 1 Ara proveu d'iniciar sessió a la màquina, amb: "ssh '[email protected]'" i comproveu que només s'han afegit les claus que volíeu.

En cas que tingueu diverses claus SSH a l'ordinador client, per copiar la clau pública adequada a l'ordinador remot, escriviu l'ordre amb el patró que es mostra a continuació.

ssh-copy-id -i id_rsa_xxx.pub nom d'usuari@amfitrió

💡 Consell

No oblideu posar .pub al final del nom del fitxer mentre escriviu al terminal.

Còpia de la clau pública pel mètode de canonades

Escriviu la següent comanda al terminal si ssh-copy-id la utilitat no està disponible. Aquesta ordre pot semblar una mica més llarga, però funciona correctament.

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Substitueix nom_usuari_remot i adreça_ip_servidor amb el vostre nom d'usuari i adreça IP.

Si teniu diverses claus SSH disponibles al vostre ordinador, substituïu-ne id_rsa.pub amb el fitxer de clau SSH pública que escolliu. Per exemple, id_rsa_client_1.pub.

Escriviu la contrasenya de l'usuari remot quan se us demani i premeu Entra.

Contrasenya de [email protected]:

Un cop introduïu la contrasenya, el id_rsa.pub el fitxer es copiarà a claus_autoritzades fitxer del servidor remot.

Copia manualment la clau pública

Utilitzeu aquest mètode quan no tingueu accés al vostre sistema remot mitjançant l'autenticació de contrasenya.

Obriu el id_rsa.pub fitxer utilitzant el gat comanda al terminal. També podeu obrir-lo des d'un editor de text, el propòsit és només copiar el contingut del fitxer.

cat ~/.ssh/id_rsa.pub

El contingut del fitxer es veurà com es mostra a continuació.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib VvJyZ + + dGO8zRNT64 SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z csqdvIDQfMuH su_nombre @ your_PC

Ara, inicieu sessió al vostre servidor remot i enganxeu el contingut copiat mitjançant l'ordre que es mostra a continuació. Substituïu el sobre_cadena amb el contingut copiat.

echo above_string >> ~/.ssh/authorized_keys

Configuració de diverses claus SSH (opcional)

Aquest pas és per a persones que tinguin configurades diverses claus SSH al seu ordinador client. Omet aquesta secció si només tens una configuració de clau SSH.

Per gestionar diverses claus SSH, ara crearem un config fitxer dins del .ssh directori mitjançant l'ordre que es mostra a continuació.

cd ~/.ssh vim config

Tipus i per entrar al mode d'ordres i escriure els detalls de diversos hosts, tal com es mostra a l'exemple següent:

Amfitrió remote-ubuntu-server HostName 172.105.XX.XX Arrel d'usuari IdentityFile ~/.ssh/id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX Arrel d'usuari IdentityFile ~/.ssh/id_rsa_client_2

De la mateixa manera, escriviu els detalls d'altres servidors remots i les seves claus. Un cop finalitzat el procés, premeu Esc i :wq per guardar i sortir.

Ara els processos posteriors són els mateixos per a tots dos amb una o diverses claus SSH a l'ordinador client.

Inicieu sessió al vostre servidor remot mitjançant claus SSH

Un cop finalitzat el procés de còpia de la clau pública, inicieu sessió al vostre servidor remot escrivint l'ordre tal com es mostra a continuació.

ssh nom_usuari_remot@adreça_ip_servidor

Si heu proporcionat la frase de contrasenya durant la generació del parell de claus, se us demanarà que l'introduïu. S'obrirà una nova sessió un cop finalitzat el procés d'autenticació.

Ara heu configurat correctament l'autenticació basada en claus SSH al vostre servidor remot. Però l'autenticació basada en contrasenya encara està activa al vostre servidor, això vol dir que el vostre servidor remot encara és propens a atacs de força bruta.

Així que ara desactivarem completament el mecanisme d'inici de sessió basat en contrasenya des del nostre servidor remot.

Desactiveu el mecanisme d'inici de sessió basat en contrasenyes

Abans de fer cap canvi, assegureu-vos que l'usuari root o qualsevol usuari habilitat sudo per al vostre compte remot tingui accés al vostre servidor mitjançant el sistema d'autenticació basat en clau SSH. Aquest pas bloquejarà o desactivarà completament l'inici de sessió basat en contrasenya, de manera que és crucial que almenys un privilegi d'usuari root tingui accés al servidor mitjançant la clau SSH.

Inicieu sessió al vostre servidor Ubuntu remot i escriviu l'ordre que es mostra a continuació.

sudo vim /etc/ssh/sshd_config
  • Premeu Esc, / i escriviu "Password Authentication" i premeu entrar.
  • Ara premeu i i canvieu el valor de "PasswordAuthentication yes" a "PasswordAuthentication no".
  • Premeu Esc i repetiu el procés anterior per trobar "ChallengeResponseAuthentication", "UsePAM" i canvieu els seus valors a no també.
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no

Un cop establerts tots els valors no, premeu Esc, tipus :wq i colpejar entrar.

Per activar tots els canvis, reinicieu ssh servei mitjançant l'ordre següent.

sudo systemctl reiniciar ssh

Ara obriu una finestra de terminal nova al vostre ordinador i comproveu que l'autenticació de la vostra clau SSH funciona correctament abans de tancar la sessió actual.

Un cop finalitzat el procés de verificació, tanqueu totes les sessions en curs.

Ara hem configurat correctament l'autenticació basada en clau SSH al nostre servidor Ubuntu 20.04. Ara ningú pot iniciar sessió al vostre servidor mitjançant un mecanisme d'inici de sessió basat en contrasenya.