Come autenticare su SSH con le chiavi anziché con le password

Come autenticare su SSH con le chiavi anziché con le password / Linux

SSH è un ottimo modo per ottenere l'accesso remoto al tuo computer. Simile all'FTP, puoi connetterti tramite SSH FTP Che cos'è SSH e come è diverso dall'FTP [Tecnologia spiegata] Che cos'è SSH e come è diverso dall'FTP [Spiegazione della tecnologia] Ulteriori informazioni per ottenere l'accesso sicuro a un file server con il tuo FTP preferito client Master Trasferimenti di file FTP su tutti i tuoi siti con FileZilla Master Trasferimenti di file FTP su tutti i tuoi siti con FileZilla Un gran numero di client FTP vecchi ha avuto intoppi quando si trattava di trasferimenti di file di grandi dimensioni. Le app hanno sperimentato i consueti timeout che ti aspetteresti quando il computer si siede lì per 15 a ... Leggi di più, accedi rapidamente ai file remoti o persino monta un disco di rete sul tuo computer. Ma c'è di più in SSH che nell'accesso remoto ai file. L'accesso su SSH nel terminale (o usando PuTTY su Windows) fornisce l'accesso alla shell remota (dopotutto, SSH è l'abbreviazione di Secure SHell). È come gestisco il mio server multimediale da lontano.

Quando apri le porte Cos'è il port forwarding e come può aiutarmi? [MakeUseOf Explains] Che cos'è il port forwarding e come può aiutarmi? [MakeUseOf Explains] Piangi un po 'dentro quando qualcuno ti dice che c'è un problema di port forwarding ed è per questo che la tua nuova app non funzionerà? La tua Xbox non ti permetterà di giocare, i tuoi download torrent rifiutano ... Leggi di più sul tuo router (la porta 22 per l'esattezza) non puoi solo accedere al tuo server SSH dalla tua rete locale, ma da qualsiasi parte del mondo.

Tuttavia, non si vuole rischiare di utilizzare una password debole per l'autenticazione. Se qualcuno accede al tuo computer tramite SSH, ottiene l'accesso completo alla shell. Per essere chiari, non è qualcosa che vogliamo. Fortunatamente, è molto semplice configurare il server SSH globale in modo molto sicuro utilizzando l'autenticazione basata su chiavi e disabilitando l'autenticazione della password sul server.

Questo è per me?

Si sta tentando di perdere i sensi con sicurezza personale. Se stai usando il server per mezzi privati, potresti pensare che le persone semplicemente non sanno del tuo server e quindi non tenteranno di hackerarlo - la sicurezza attraverso l'oscurità. Quello sarebbe a molto ipotesi sbagliata. Poiché (la maggior parte) il traffico SSH viene trasmesso sulla porta 22, gli aggressori controllano di routine la visibilità della porta 22 su indirizzi IP casuali, seguiti da un attacco di forza bruta. Questo è uno dei modi in cui le botnet sono create per essere utilizzate negli attacchi DDOS Che cos'è un attacco DDoS? [MakeUseOf Explains] Che cos'è un attacco DDoS? [MakeUseOf Explains] Il termine DDoS sibila quando il cyber-attivismo impenna la sua testa in massa. Questi tipi di attacchi fanno notizia internazionale a causa di molteplici ragioni. I problemi che scatenano quegli attacchi DDoS sono spesso controversi o altamente ... Per saperne di più .

Per farla breve: se trasmetti il ​​tuo server SSH via Internet (ad esempio, la porta diretta 22), allora sì, questo è per te.

L'idea dei log-in SSH basati su chiave

Gli accessi SSH basati su chiavi si basano sull'idea della crittografia a chiave pubblica. Ci vorrebbe troppo lontano per spiegare la complessità, ma proveremo a dipingere una semplice immagine di ciò che sta accadendo dietro le quinte.

Nel processo seguente, il computer client genera due chiavi: una chiave pubblica e una chiave privata. L'idea generale è che è possibile crittografare i dati con la chiave pubblica, ma solo decrittografarli con la chiave privata. Metteremo la chiave pubblica sul server e chiediamo di crittografare tutte le comunicazioni in uscita con esso. Ciò garantisce che solo i client con la chiave privata possano decodificare e leggere i dati.

1. Installare OpenSSH

Per prima cosa, configureremo un server SSH usando OpenSSH. Se si dispone già di un server SSH in esecuzione e si desidera solo sapere come impostare l'autenticazione basata su chiave, è possibile saltare questo passaggio. Utilizzare il gestore pacchetti preferito per installare l'applicazione server OpenSSH. Il modo più semplice potrebbe essere ancora quello di eseguire il apt-get comando dal Terminale.

sudo apt-get install openssh-server

Inserire la password, confermare e attendere un minuto per completare l'installazione. Congratulazioni, ora hai un server SSH. (È stato facile!)

Puoi utilizzare l'applicazione così com'è o modificarla / Etc / ssh / sshd_config per configurarlo. Corri il man sshd_config comando in Terminale per ottenere maggiori informazioni. Un'altra grande risorsa per saperne di più su OpenSSH è la relativa pagina di aiuto su Ubuntu.

2. Genera chiavi

Genereremo un set di chiavi. Eseguire i seguenti comandi (adattati dalla pagina della Guida di Ubuntu di OpenSSH / Keys).

mkdir ~ / .ssh
chmod 700 ~ / .ssh
ssh-keygen -t rsa

Il primo comando crea una directory nascosta '.ssh' nella cartella home, il secondo comando modifica i permessi di accesso della cartella mentre il terzo comando genera effettivamente un set di chiavi RSA. Prima ti verrà chiesta una posizione in cui salvare le chiavi (lascia vuoto e premi invio per salvare nella posizione predefinita) e la seconda per una passphrase.

Questa passphrase crittografa ulteriormente la chiave privata che è archiviata sul tuo computer, essenzialmente ti dà più tempo per proteggere il server SSH se la tua chiave privata viene mai rubata. Assicurati di scegliere una passphrase che sei in grado di ricordare, poiché dovrai inserirla quando tenti di usare la tua chiave.

3. Trasferisci la chiave pubblica

Successivamente, dovrai trasferire la chiave pubblica che hai generato nel passaggio precedente al computer server SSH. Se la tua macchina client esegue anche Linux, questo può essere ottenuto molto facilmente eseguendo il comando sottostante (sostituendo e per il nome utente e l'indirizzo IP sul tuo server SSH).

ssh-copy-id @

Se il tuo client non supporta il comando ssh-copy-id, puoi invece utilizzare il comando seguente. È un po 'più complicato, ma raggiunge essenzialmente gli stessi risultati.

cat ~ / .ssh / id_rsa.pub | SSH @ "mkdir ~ / .ssh; cat >> ~ / .ssh / authorized_keys"

Ti verrà chiesto di inserire la password dell'utente per il server SSH. Se i comandi vengono eseguiti senza errori, la tua chiave pubblica sarà stata copiata sul server.

4. Disabilitare l'autenticazione della password

Si noti che il sistema non è ancora più sicuro rispetto al primo passaggio. Sebbene almeno un client sia configurato per l'utilizzo dell'autenticazione basata su chiave, questo lascia comunque spazio ad altri client per connettersi con una password. Per finire, disabiliteremo completamente l'autenticazione della password. Dopo questo passaggio, solo i computer che hanno superato il processo precedente possono connettersi al server SSH.

Per disabilitare l'autenticazione della password, modificare il / Etc / ssh / sshd_config file nel tuo editor preferito. Uno dei modi più semplici per modificare un file limitato è, ancora, usando Terminal. (Sono parziale a nano, ma puoi usare quello che ti piace di più.)

sudo nano / etc / ssh / sshd_config

Troverete circa 40 righe dal fondo del file

#PasswordAuthentication yes

Rimuovere il simbolo del numero (#) e modificare l'impostazione su "no", come di seguito.

PasswordAuthentication no

Il file finale dovrebbe assomigliare a questo:

Salva il file premendo CTRL + X. Conferma la modifica e il nome del file, e hai quasi finito. Basta riavviare il server SSH per eseguirlo con queste nuove impostazioni.

sudo restart ssh

Noterai inoltre che il client smetterà di chiedere la passphrase per decrittografare la tua chiave se l'autenticazione della password è disabilitata sul server. Ora che hai un server SSH sicuro, come intendi usarlo? Come un file server sicuro, una shell remota o per inoltrare altri servizi su SSH? Fateci sapere nella sezione commenti qui sotto!

Credito immagine: Shutterstock

Scopri di più su: Sicurezza online, accesso remoto.