Tutoriel Linux

Agente SSH su Linux: evita di riscrivere la tua passphrase senza lasciare la chiave in giro

Débutant4 min de lecture

Se utilizzi una chiave SSH protetta da una passphrase, probabilmente conosci già il problema: è sicura, ma diventa presto noiosa quando devi digitare nuovamente la passphrase ogni volta che ti connetti o ogni volta che… tira, tiraLa risposta sbagliata è rimuovere la passphrase dalla chiave. La risposta migliore, in molti casi, è ssh-agent.

ssh-agent Mantiene la chiave di sblocco in memoria per tutta la durata della sessione. Basta digitare la passphrase una sola volta e l’agente risponderà alle richieste SSH. È comodo, ma richiede due precauzioni: verificare quale agente è in uso e limitare la durata della sessione quando si lavora su una macchina condivisa o su un server di amministrazione.

Tux protegge una chiave SSH in un agente sicuro connesso a un server Linux
ssh-agent evita di dover ridigitare la passphrase mantenendo al contempo la chiave SSH protetta.

Verifica se ssh-agent è già in esecuzione

Su molte distribuzioni Linux con interfaccia grafica, un agente SSH è già in esecuzione. In un ambiente SSH puro, su un server o in una sessione minimale, questo non è sempre vero. Inizia controllando la variabile d’ambiente utilizzata dagli strumenti SSH:

echo "$SSH_AUTH_SOCK"

Se l’output è vuoto, la shell non sa con quale agente comunicare. Puoi anche controllare le chiavi che sono già state caricate:

ssh-add -l

Se ricevi un messaggio come L'agente non ha identitàL’agente risponde correttamente, ma non viene caricata alcuna chiave. Se il comando indica che non è possibile connettersi all’agente, è necessario avviarne uno.

Avvia ssh-agent nella tua sessione

Per avviare un agente nella shell corrente, utilizzare:

eval "$(ssh-agent -s)"

Il comando definisce le variabili necessarie, tra cui SSH_AUTH_SOCK E SSH_AGENT_PID. Senza il valL’agente può avviarsi, ma la shell non recupera correttamente il suo ambiente. Questo è il tipo di dettaglio che fa perdere tempo quando si esegue un test troppo in fretta.

Puoi confermare subito dopo:

echo "$SSH_AUTH_SOCK"

Su un computer personale, spesso è sufficiente. Su un server condiviso, preferisco evitare di lasciare un agente aperto tutto il giorno senza un limite di tempo.

Aggiungi una chiave SSH con durata limitata

Per caricare un’unità USB standard:

ssh-add ~/.ssh/id_ed25519

La passphrase va inserita una sola volta. Dopodiché, le connessioni che utilizzano questa chiave passeranno attraverso l’agente. Per verificare cosa è caricato:

ssh-add -l -E sha256

Per limitare la durata della chiave nell’agente, utilizzare -TEsempio con un’ora:

ssh-add -t 1h ~/.ssh/id_ed25519

Questa è la mia configurazione preferita su una workstation amministrativa. Si mantiene la comodità dell’agente, ma la chiave non rimane disponibile indefinitamente se ci si dimentica di disconnettersi.

Verifica della connessione senza reinserire la passphrase

Una volta caricata la chiave, prova una connessione normale:

utente ssh@server

Se la chiave corrisponde a quella del server, SSH non ti chiederà più la passphrase. In caso di errore, riprova in modalità dettagliata:

ssh -v utente@server

Potrai vedere quale chiave viene offerta, se l’agente risponde e dove viene bloccata la connessione. Se il problema è più probabilmente legato al servizio SSH lato server, ho pubblicato anche una guida a riguardo. riavviare SSH su Ubuntu in modo pulito e un altro per Reinstallare SSH quando smette di rispondere..

Rimuovere le chiavi dall’agente

Per rimuovere un tasto specifico:

ssh-add -d ~/.ssh/id_ed25519

Per svuotare tutte le chiavi caricate:

ssh-add -D

Se hai avviato l’agente manualmente e desideri arrestarlo:

ssh-agent -k

Non confondere questi comandi con l’eliminazione del file chiave in ~/.sshIn questo caso, si sta semplicemente rimuovendo la chiave dalla memoria dell’agente.

Prestare attenzione durante il trasferimento degli agenti SSH

Trasferimento dell’agente, spesso attivato con ssh -AQuesto permette a una macchina remota di utilizzare il tuo agente locale per reindirizzare il traffico verso un altro server. È utile in alcuni ambienti, ma lo eviterei come impostazione predefinita.

Se il server intermedio viene compromesso, la chiave privata non viene copiata, ma l’agente può comunque essere accessibile finché la sessione è aperta. Per un host bastion o una macchina che non si controlla completamente, è consigliabile optare per una chiave dedicata, una durata limitata o una configurazione SSH più restrittiva.

Per mantenere una sessione lunga senza perdere il lavoro, schermo sotto Linux risponde a un’altra esigenza: mantenere una sessione amministrativa aperta sul lato server. Questo non sostituisce ssh-agentma i due strumenti si completano a vicenda in modo efficace.

Il compromesso che manterrei

Non rimuovere la passphrase dalle tue chiavi SSH per risparmiare qualche secondo. Invece, carica la chiave in ssh-agent, controlla i tasti attivi con ssh-add -llimitare la durata con ssh-add -t Quando il contesto è delicato, svuotare l’agente al termine dell’intervento.

Le pagine di manuale di ssh-agent, ssh-add E Descrivono dettagliatamente le opzioni disponibili. Non c’è bisogno di ricordare tutto. L’importante è conservare una chiave sicura, ma che possa essere utilizzata senza trasformare ogni connessione in un’impresa.

sudo apt update && sudo apt upgrade