mywiki/linux/security/ssh.md

5.7 KiB
Raw Permalink Blame History

Creazione e gestione chiavi SSH

SSH è un protocollo client / server utilizzato per i login remoti. Utilizzando la crittografia per l'autenticazione, SSH fornisce un metodo crittografato per accedere al server o ad un'altra macchina.

Installazione SSH

sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh #Abilita SSH all'accensione della macchina

Creazione chiave SSH

Il protocollo SSH utilizza una tecnica di crittografia chiamata crittografia asimmetrica. Fondamentalmente, la crittografia asimmetrica è un sistema che usa una coppia di chiavi, cioè la chiave pubblica e quella privata.

La chiave pubblica può essere condivisa con chiunque, avendo come scopo principale quello di criptare i dati, convertendo il messaggio in un codice segreto. Questa chiave viene solitamente inviata ad altri sistemi, per esempio i server, per criptare i dati prima di inviarli su Internet.

Daltra parte, la chiave privata è quella che deve rimanere segreta e viene usata per decifrare i dati crittografati con la chiave pubblica. Senza di essa, è impossibile decodificare le informazioni criptate.

Questo metodo permette al client e al server di mantenere un canale di comunicazione sicuro.

Ecco cosa succede in background quando si avvia una connessione SSH ad un server:

  • Il client invia la chiave pubblica al server;
  • Il server chiede al client di firmare un messaggio casuale criptato con la chiave pubblica usando la chiave privata;
  • Il client firma il messaggio e inoltra il risultato al server;
  • Viene stabilita una connessione sicura tra il client e il server.

La coppia di chiavi viene creata sulla propria macchina (client) in questo modo:

→ ssh-keygen -t ed25519 -C "<commento>"
  • dove ed25519 indica lalgoritmo utilizzato per creare la firma digitale della coppia di chiavi. Se il sistema lo supporta, ed25519 è il miglior algoritmo per creare coppie di chiavi SSH;
  • il flag -C è utilizzato per fornire un commento personalizzato alla fine della chiave pubblica, che di solito è lemail o lidentificazione del creatore della coppia di chiavi.

Ecco un esempio:

piccihud@WORKSTATION03:~
→ ssh-keygen -t ed25519 -C "piccihud"
Generating public/private ed25519 key pair.
Enter file in which to save the key (~/.ssh/id_ed25519): ~/.ssh/<file_name>
  • <file_name> indica il nome del file in cui sarà salvata la chiave.

Poi verrà chiesta una passphrase da aggiungere alla coppia di chiavi. Questo aggiunge un ulteriore livello di sicurezza se, in qualsiasi momento, il vostro dispositivo viene compromesso. Non è obbligatorio aggiungere una passphrase, ma è sempre raccomandato.

Questo comando genera due file nella directory selezionata (comunemente ~/.ssh):

  • la chiave pubblica con lestensione .pub;
  • e quella privata senza estensione.

La chiave pubblica può essere vista con un semplice comando:

piccihud@WORKSTATION03:~
→ cat /home/piccihud/.ssh/<file_name>.pub

Caricamento della chiave SSH nella macchina remota (server)

L'output del comando precedente deve essere copiato nel file .ssh/authorized_keys presente sulla macchina remota.

Per prima cosa, Si accede tramite SSH alla macchina remota:

→ ssh user@indirizzo_ip
piccihud@WORKSTATION03:~
→ ssh root@10.21.81.138 -p 1220 (per una porta differente dalla 22)
[15:33:25]root@server:~
→ cd .ssh
[15:33:31]root@server:~/.ssh
→ echo ssh-ed25519 ******************************************************* piccihud >> authorized_keys

Oppure, se si preferisce, si può utilizzare Nano ovvero Vim. Tramite il comando cat .ssh/authorized_keys o less .ssh/authorized_keys è possibile vedere la propria chiave nel file di configurazione.

Configurazione SSH sulla macchina locale

Nel file di configurazione locale, va indicato come raggiungere l'host remoto:

piccihud@WORKSTATION03:~
→ vim .ssh/config
host <key_name>                     #il nome della macchina remota alla quale si accederà
hostname 10.21.81.138               #indirizzo ip della macchina remota
user root
IdentityFile ~/.ssh/<file_name>     #indicare il percorso della chiave ssh privata
TCPKeepAlive yes
port 22

Accedere alla macchina remota

Per accedere a una macchina server tramite SSH è necessario conoscere l'indirizzo ip di questa macchina e il nome dell'utente. Ciò è possibile scoprirlo con questi semplici comandi:

→  hostname -I
192.168.0.115

→  whoami
piccihud

In assenza della chiave, quindi si può sempre accedere in questo modo:

→  ssh piccihud@192.168.0.115

Altrimenti, per accedere alla macchina basta digitare: → ssh <key_name> Ad esempio:

piccihud@WORKSTATION03:~
→ ssh mnt-bbb

Aggiungere la Chiave SSH allAccount Git

Nelle impostazioni del proprio account, aggiungere la propria chiave pubblica nel campo SSH and GPG keys.

SSH

Quindi, configurare il file .ssh/config nella macchina locale:

# host gitea.it/piccihud
# hostname 10.97.57.55
user <name>
IdentityFile /home/user/.ssh/<file>
TCPKeepAlive yes
port 22

Modificare le impostazioni di git: git config --global --edit

Copiare la chiave pubblica in remoto

ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port_number> <username>@<host>

Collegamenti