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.
| Opzione | Effetto |
|---|---|
-l | Elenca le fingerprint. |
-L | Stampa i parametri delle chiavi pubbliche. |
-d FILE | Rimuove dall’agent l’identità indicata. |
-D | Rimuove tutte le identità. |
-t DURATA | Imposta una durata massima per la chiave caricata. |
-c | Richiede 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
-Dpensando 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 -lL’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 -lmostra cosa è caricato.- Durata limitata e rimozione esplicita riducono l’esposizione.
Fonti essenziali
Fonte primaria verificata il 12 ottobre 2026.
COMMUNITY
Non ci sono ancora commenti. Puoi iniziare tu la conversazione.