Configurazione del client per l’autenticazione SSH con chiave pubblica (Windows/Linux)

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:USERPROFILE con %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_ed25519 come 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

  1. Chiave non autorizzata dal server
    Verifica che PubkeyAuthentication yes sia attivo nel server SSH.

  2. Chiave non registrata correttamente
    Controlla permessi e posizione di authorized_keys.

  3. 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à.