Cryptology Academy · Lezione

Autenticazione a chiave pubblica e agent forwarding

Comprenda authorized_keys, le chiavi Ed25519 rispetto a RSA e le implicazioni di sicurezza dell'agent forwarding di SSH.

Lezione 2 di 413 passaggi

Autenticazione a chiave pubblica e agent forwarding è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Formato del file authorized_keys

L'autenticazione SSH con chiave pubblica si basa sul file authorized_keys, che in genere si trova in ~/.ssh/authorized_keys sul server. Ogni riga contiene una chiave pubblica nel formato: algorithm base64-key comment. Il server verifica se il client è in grado di dimostrare di possedere la chiave privata corrispondente firmando una challenge.

Generazione di chiavi SSH con ssh-keygen

Il comando ssh-keygen crea coppie di chiavi per l'autenticazione. Eseguendo ssh-keygen -t ed25519 si genera una moderna coppia di chiavi Ed25519. È possibile specificare un commento con -C per identificare la chiave, ad esempio il proprio indirizzo email. Per impostazione predefinita, lo strumento salva la chiave privata (id_ed25519) e la chiave pubblica (id_ed25519.pub) in ~/.ssh.

Confronto tra i tipi di chiavi: RSA, ECDSA, Ed25519

Le chiavi RSA a 4096 bit sono altamente compatibili con i sistemi legacy, ma sono più lente nella firma. ECDSA su NIST P-256 è più veloce e produce firme più piccole, ma alcuni crittografi mettono in dubbio la selezione dei parametri delle curve NIST. Ed25519, basato su Curve25519, rappresenta la best practice attuale: chiavi e firme rapide e di piccole dimensioni, nessuna vulnerabilità nota e disponibilità in tutte le implementazioni SSH moderne.

Chiavi private protette da passphrase

Il file della chiave privata dovrebbe essere protetto da una passphrase. ssh-keygen cifra la chiave privata utilizzando una chiave derivata dalla passphrase (bcrypt per le chiavi moderne), quindi un eventuale aggressore che sottragga il file non può utilizzarlo senza la passphrase. Senza una passphrase, chiunque abbia accesso al file può autenticarsi a vostro nome su qualsiasi server che possieda la chiave pubblica corrispondente.

ssh-agent per la gestione delle chiavi

Il daemon ssh-agent mantiene in memoria le chiavi private decifrate durante una sessione di accesso. Si carica una chiave con ssh-add ~/.ssh/id_ed25519, che richiede la passphrase una sola volta. Le connessioni SSH successive chiedono all'agent di firmare le challenge senza dover reinserire la passphrase, combinando sicurezza e praticità.

Come ssh-agent firma le challenge

Quando un server SSH invia una challenge di autenticazione, il client SSH delega la firma a ssh-agent tramite un socket Unix. L'agent esegue la firma crittografica utilizzando la chiave privata memorizzata in memoria e restituisce soltanto la firma. I byte della chiave privata non lasciano mai il processo agent, nemmeno per raggiungere il client SSH.

Agent forwarding: possibilità e rischi

Il forwarding dell'agent (ForwardAgent yes o ssh -A) consente a una sessione SSH remota di utilizzare l'agent locale per autenticarsi verso altri server. È utile per passare attraverso bastion host senza copiare le chiavi private sul bastion. Tuttavia, se il bastion è compromesso, un utente root può accedere al socket dell'agent e autenticarsi a vostro nome su qualsiasi server.

ProxyJump e ForwardAgent per i bastion host

ProxyJump (ssh -J bastion target) è l'alternativa più sicura a ForwardAgent per accedere tramite un bastion host. Crea un tunnel TCP attraverso il bastion senza esporvi il socket dell'agent. Il server di destinazione riceve una connessione diretta dal client locale e il bastion inoltra soltanto byte TCP cifrati, senza alcuna possibilità di utilizzare le vostre credenziali.

Autenticazione con certificati SSH

SSH supporta l'autenticazione basata su certificati, in cui una Certificate Authority (CA) firma le chiavi pubbliche degli host e degli utenti. Invece di distribuire singole chiavi pubbliche su ogni server, si configurano i server affinché si fidino della propria CA. Un certificato utente firmato concede l'accesso a tutti i server che si fidano di quella CA, con eventuali limiti di validità e restrizioni sui principal incorporati nel certificato.

ssh-keyscan per la raccolta massiva delle chiavi

Lo strumento ssh-keyscan si connette a uno o più host e recupera le relative chiavi pubbliche host senza autenticazione. È utile per automatizzare la compilazione dei file known_hosts negli script di deployment. L'output può essere reindirizzato direttamente in un file known_hosts: ssh-keyscan -H example.com >> ~/.ssh/known_hosts.

Riepilogo del flusso di autenticazione con chiave

Autenticazione con chiave pubblica: il client invia la chiave pubblica, il server controlla authorized_keys, il server invia una challenge firmata con l'ID della sessione, il client (tramite l'agent) la firma con la chiave privata e il server verifica la firma utilizzando la chiave pubblica memorizzata. Se la firma è valida, l'autenticazione ha esito positivo senza trasmettere alcuna credenziale segreta.

Scelta del tipo di chiave SSH

Quale tipo di chiave SSH rappresenta la best practice attuale per le nuove implementazioni, grazie alla velocità, alle dimensioni ridotte della chiave e alle solide proprietà di sicurezza?

Riepilogo dell'autenticazione con chiave pubblica

Punti chiave: memorizzare le chiavi pubbliche in authorized_keys, proteggere le chiavi private con passphrase, utilizzare ssh-agent per mantenere in memoria le chiavi decifrate, preferire il tipo di chiave Ed25519, utilizzare ProxyJump invece di ForwardAgent per accedere tramite un bastion ed evitare di esporre il socket dell'agent, e valutare l'uso dei certificati SSH per una gestione scalabile degli accessi.

Gratis per iniziare

Impara Cryptology Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
67
Lezioni
261

Domande Frequenti

La lezione «Autenticazione a chiave pubblica e agent forwarding» è gratuita?

Sì — il testo completo di «Autenticazione a chiave pubblica e agent forwarding» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Autenticazione a chiave pubblica e agent forwarding»?

Comprenda authorized_keys, le chiavi Ed25519 rispetto a RSA e le implicazioni di sicurezza dell'agent forwarding di SSH. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Autenticazione a chiave pubblica e agent forwarding»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Handshake SSH e autenticazione con chiave host
  2. Autenticazione a chiave pubblica e agent forwarding
  3. Tecniche di tunneling SSH e port forwarding
  4. Hardening SSH e buone pratiche di audit
← Torna a Cryptology Academy