THREATHUNTING.IT / Tutorial

ssh-add: gestire le chiavi caricate nell’SSH agent

Caricare una chiave protetta, controllare le identità disponibili e limitarne durata o utilizzo senza copiare la chiave sul server.

LivelloIntermediate ssh-add: gestire le chiavi caricate nell’SSH agent

ssh-add carica identità private nell’SSH agent. In questo modo l’agent può firmare le richieste di autenticazione senza chiedere la passphrase per ogni connessione, mentre la chiave privata continua a restare sul computer locale.

Obiettivo, pubblico e prerequisiti

Imparerai a caricare, elencare e rimuovere identità e a impostare una durata limitata. La guida è rivolta a utenti Linux che conoscono già la coppia di chiavi SSH. Servono una chiave di laboratorio e una sessione con un agent raggiungibile tramite SSH_AUTH_SOCK.

Uso autorizzato

Carica soltanto chiavi di cui sei responsabile. Evita l’agent forwarding quando non è necessario e non confondere la comodità dell’agent con un’autorizzazione più ampia sui server.

Come capire se l’agent è disponibile

test -n "$SSH_AUTH_SOCK" && echo "Agent configurato"

La variabile contiene il percorso del socket usato per comunicare con l’agent. Se è vuota, ssh-add non sa quale agent contattare. Molte sessioni desktop ne avviano già uno; in una shell di laboratorio puoi crearne uno temporaneo:

eval "$(ssh-agent -s)"

eval modifica l’ambiente della shell corrente. Usalo soltanto con l’output del programma atteso e ricorda che l’agent così avviato dovrà essere terminato al termine del laboratorio.

Caricare una chiave specifica

ssh-add ~/.ssh/id_ed25519_linuxplus

Qui va indicata la chiave privata, non il file .pub. Se è protetta, ssh-add chiede la passphrase dal terminale. La passphrase non va aggiunta alla riga di comando.

Elencare le identità disponibili

ssh-add -l

-l mostra le fingerprint delle identità rappresentate dall’agent. Per visualizzare le chiavi pubbliche complete si può usare -L, prestando attenzione a non confondere l’output con materiale privato.

Operazioni comuni di ssh-add
OpzioneEffetto
-lElenca le fingerprint.
-LStampa i parametri delle chiavi pubbliche.
-d FILERimuove dall’agent l’identità indicata.
-DRimuove tutte le identità.
-t DURATAImposta una durata massima per la chiave caricata.
-cRichiede conferma prima di ogni uso, tramite il meccanismo supportato dall’ambiente.

Limitare la permanenza nell’agent

ssh-add -t 30m ~/.ssh/id_ed25519_linuxplus

In questo esempio l’identità viene rimossa automaticamente dopo trenta minuti. La sintassi delle durate dipende dalla versione OpenSSH: verifica il manuale installato con man ssh-add.

Al termine di un’attività puoi rimuovere una singola identità:

ssh-add -d ~/.ssh/id_ed25519_linuxplus.pub

Per la rimozione, il manuale interpreta l’argomento come una chiave pubblica; se necessario prova anche ad aggiungere il suffisso .pub.

Verificare l’identità durante una connessione

ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519_linuxplus server-lab.example

L’agent può contenere molte identità. Un test esplicito riduce l’ambiguità, ma il server deve già conoscere la chiave pubblica corrispondente.

Errori comuni

  • Vedere “Could not open a connection to your authentication agent” e ignorare SSH_AUTH_SOCK.
  • Caricare molte chiavi e non sapere quale venga offerta al server.
  • Usare -D pensando che rimuova soltanto una chiave.
  • Credere che caricare una chiave nell’agent la installi sul server.
  • Inoltrare l’agent verso host non necessari o non affidabili.

Esercizio guidato

In una shell di laboratorio, carica una chiave per cinque minuti, verifica la fingerprint e poi rimuovila manualmente.

Mostra una possibile soluzione
ssh-add -t 5m ~/.ssh/id_ed25519_linuxplus
ssh-add -l
ssh-add -d ~/.ssh/id_ed25519_linuxplus.pub
ssh-add -l

L’ultima lista non deve più contenere la fingerprint rimossa.

Risultato atteso

Dopo il caricamento, ssh-add -l deve mostrare la fingerprint della sola identità prevista. Dopo la rimozione, la stessa fingerprint non deve più comparire. Un’eventuale chiave con durata limitata deve inoltre scomparire dall’elenco al termine dell’intervallo configurato.

Ripristino e pulizia del laboratorio

Rimuovi l’identità di prova con ssh-add -d. Se hai avviato un agent temporaneo per l’esercizio, terminalo e ripulisci le variabili nella stessa shell con eval "$(ssh-agent -k)". Verifica quindi che l’ambiente non punti più al socket temporaneo. Non usare ssh-add -D su una sessione di lavoro condivisa senza aver inventariato le altre identità.

Cosa ricordare

  • L’agent conserva temporaneamente identità disponibili per la firma.
  • ssh-add -l mostra cosa è caricato.
  • Durata limitata e rimozione esplicita riducono l’esposizione.

Fonti essenziali

Fonte primaria verificata il 12 ottobre 2026.

VALUTAZIONE DEI LETTORI

Questo articolo ti è stato utile?

Punteggio 0 · 0 positivi, 0 negativi

Vedi gli articoli più apprezzati →

REVISIONE TECNICA

Redazione ThreatHunting.it

Revisionato il .

Come lavoriamo →

COMMUNITY

Commenti 0

Non ci sono ancora commenti. Puoi iniziare tu la conversazione.

Scrivi un commento +
Non sarà pubblicata.
I commenti vengono pubblicati dopo la moderazione.

PRIVACY / LE TUE SCELTE

Cookie e statistiche

Usiamo cookie necessari per accesso, sicurezza e memorizzazione delle preferenze. Solo con il tuo consenso raccogliamo statistiche sulle pagine visitate, paese, dispositivo, browser e provenienza, con un identificatore pseudonimo giornaliero. Il consenso abilita anche Google Analytics 4, descritto nell’informativa. Nessuna pubblicità o profilazione commerciale.

Puoi rifiutare le statistiche e continuare a usare il sito. Leggi l’informativa privacy e cookie e modifica la scelta in qualsiasi momento.