Panoramica
Questo articolo spiega come configurare l’autenticazione SSH con chiave pubblica sul lato client, per connettersi in modo sicuro a un server. Le istruzioni coprono sia Windows che Linux.
Prerequisiti
- Il client SSH è già installato (integrato in Windows 10+ e nei sistemi Linux)
- Il server di destinazione consente l’autenticazione con chiave pubblica
- L’utente esiste già sul server
Tipi di chiave e algoritmi
I principali tipi di chiavi usati da SSH sono RSA, ECDSA ed Ed25519. La seguente tabella riassume caratteristiche, uso consigliato e compatibilità:
| Tipo di chiave | Caratteristiche | Uso consigliato | Compatibilità |
|---|---|---|---|
| RSA | Storico e ampiamente supportato, lunghezza variabile. | Sistemi legacy o ad alta compatibilità. | Molto alta |
| ECDSA | Basato su curve ellittiche, più rapido di RSA a parità di sicurezza. | Ambienti con attenzione alle prestazioni. | Media |
| Ed25519 | Standard moderno, sicuro e veloce, chiave corta. | Sistemi nuovi o con priorità alla sicurezza. | Alta (SSH 6.5+) |
Ed25519 è oggi lo standard raccomandato per nuovi ambienti; RSA rimane utile per la compatibilità; ECDSA è una via di mezzo.
Convenzioni variabili
| Variabile | Esempio | Descrizione |
|---|---|---|
<<USERNAME>> |
exampleuser |
Nome utente locale sul client |
<<SERVER>> |
192.168.1.10 |
Host o IP del server |
<<USER>> |
ubuntu / ec2-user |
Utente usato per accedere al server |
<<EMAIL_ADDRESS>> |
user@example.com |
Commento opzionale nella chiave |
Nota Windows: Tutti i comandi sono per PowerShell.
Se usi CMD, sostituisci$env:USERPROFILEcon%USERPROFILE%.
Client Windows
1. Generare chiavi pubblica e privata
Apri PowerShell come amministratore:
ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"
Uscita tipica:
Generating public/private ed25519 key pair.
Your identification has been saved in /C:/Users/<<USERNAME>>/.ssh/id_ed25519
Your public key has been saved in /C:/Users/<<USERNAME>>/.ssh/id_ed25519.pub
Pubblica:
$env:USERPROFILE\.ssh\id_ed25519.pub
Privata:$env:USERPROFILE\.ssh\id_ed25519
2. Copiare la chiave sul server
cat $env:USERPROFILE\.ssh\id_ed25519.pub | ssh <<USER>>@<<SERVER>> "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"
Oppure copia manualmente il contenuto della chiave pubblica nel file ~/.ssh/authorized_keys sul server.
3. Testare la connessione
ssh -i $env:USERPROFILE\.ssh\id_ed25519 <<USER>>@<<SERVER>>
Client Linux
1. Generare le chiavi
ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"
Pubblica:
~/.ssh/id_ed25519.pub
Privata:~/.ssh/id_ed25519
2. Copiare la chiave sul server
ssh-copy-id -i ~/.ssh/id_ed25519.pub <<USER>>@<<SERVER>>
Oppure aggiungi manualmente la chiave a ~/.ssh/authorized_keys.
3. Testare la connessione
ssh -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>
Uso di chiavi con passphrase
Per evitare di digitare la passphrase ogni volta, attiva l’agente SSH.
1. Avvio dell’agente
Windows
Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent
Linux
eval "$(ssh-agent -s)"
Per avvio automatico:
- Windows:
Set-Service -Name ssh-agent -StartupType Automatic - Linux (in
.bashrc):eval "$(ssh-agent -s)" > /dev/null
2. Registrare la chiave
Windows
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Linux
ssh-add ~/.ssh/id_ed25519
3. Verificare
ssh-add -l
File di configurazione SSH (config)
Puoi evitare di specificare sempre utente e chiave nel comando:
Esempio:
Host myserver
HostName <<SERVER>>
User <<USER>>
IdentityFile ~/.ssh/id_ed25519
Port 22
In Windows usa
$env:USERPROFILE\.ssh\id_ed25519come percorso.
Ora basta:
ssh myserver
Per più server, definisci più blocchi Host.
Verifica e debug
Per log dettagliato:
ssh -vvv -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>
Se appare Authentication succeeded (publickey), la configurazione è corretta.
Risoluzione dei problemi
-
Chiave non autorizzata dal server
Verifica chePubkeyAuthentication yessia attivo nel server SSH. -
Chiave non registrata correttamente
Controlla permessi e posizione diauthorized_keys. -
Errore di utente o host
Assicurati che nome utente, IP e permessi siano corretti.
Conclusione
L’autenticazione SSH con chiave pubblica permette un accesso sicuro senza password.
Sia su Windows che Linux è configurabile con ssh-keygen in pochi passaggi.
Gestire correttamente chiavi e permessi è essenziale per garantire sicurezza e stabilità.
