GNU/Linux >> Linux Esercitazione >  >> Linux

Come funziona SSH senza password in Linux / UNIX

SSH è un protocollo per trasferire i dati in modo sicuro tra macchine diverse. Il protocollo SSH utilizza la crittografia a chiave pubblica per consentire al client di autenticare il server e, se necessario, per consentire al server di autenticare il client senza inviare password avanti e indietro.

La crittografia a chiave pubblica utilizza una coppia di chiavi pubblica-privata. La chiave privata è tenuta segreta e non viene mai trasferita sulla rete. La chiave pubblica può essere distribuita a tutti i peer. I messaggi crittografati utilizzando la chiave pubblica possono essere decifrati solo con la chiave privata.

Al momento della connessione SSH, il client riceve la chiave pubblica del server e verifica se questa corrisponde alla chiave pubblica memorizzata in $HOME/.ssh/known_hosts . Se questo test ha esito positivo e il server non dispone della chiave pubblica del client, è richiesta una password. Altrimenti, il server invia un messaggio crittografato con la chiave pubblica del client e se il client riesce a decifrare il messaggio con successo, utilizzando la sua chiave privata, viene stabilita la connessione.

Esistono due versioni del protocollo SSH, la versione 1 e 2. Le crittografie sono legate alla versione del protocollo. La versione 1 soffre di vulnerabilità di sicurezza, quando possibile, dovrebbe essere utilizzata la versione 2. La maggior parte dei server SSH utilizza la versione 2 del protocollo a causa delle limitazioni della versione 1.

Esistono 2 algoritmi per la crittografia di coppie di chiavi pubbliche-private, RSA e DSA .

Configurazione client

Protocollo Tipo Riga di comando
Versione 1 RSA1 -t rsa1
Versione 2 RSA -t rsa
Versione 2 DSA -t dsa

Dopo aver determinato quale tipo di identità si desidera/bisogna, il primo passo è generare una coppia di chiavi pubbliche-private e copiare la parte pubblica nella posizione appropriata sul lato server. Nella home directory dell'utente, sul computer client, esegui (dovresti avere la directory $HOME/.ssh, altrimenti creala):

# ssh-keygen -t dsa -f ~/.ssh/id_dsa 
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:Qmd9iBOzx02n4DvDiBwRoGbGGC12X9i41QtbBxznHZc root@geeklab
The key's randomart image is:
+---[DSA 1024]----+
|..  ..*.=o+......|
|.=.o o * %o*.ooE |
|o.B . * X O.+.   |
| +   = * * o     |
|      + S =      |
|       .   o     |
|                 |
|                 |
|                 |
+----[SHA256]-----+

Ecco,
-t – viene utilizzato per il tipo di crittografia.
-f – dove archiviare le coppie di chiavi pubblica/privata. In questo caso, la directory .ssh nella home dell'utente.

Una passphrase verrà richiesta dopo aver eseguito il comando precedente. Lascia vuota questa parte, premendo semplicemente [invio] se non vuoi digitare questa passphrase ad ogni connessione. In alternativa, è possibile configurare un agente ssh per gestire le passphrase.

Il comando precedente crea due file in ~/.ssh:

# ls -lrt ~/.ssh/id_dsa*
-rw-r--r--. 1 root root 602 Apr 12 14:45 /root/.ssh/id_dsa.pub
-rw-------. 1 root root 668 Apr 12 14:45 /root/.ssh/id_dsa

Configurazione del server

Il file id_dsa.pub contiene la chiave pubblica del client, che deve essere aggiunta al file $HOME/.ssh/authorized_keys sul server:

1. Copia il file id_dsa.pub sul server:

client$ scp ~/.ssh/id_dsa.pub user@server:~/.ssh/id_dsa.pub

Naturalmente, questa volta dovrai inserire la password per l'utente.

2. Ora, accedi alla macchina server e vai alla directory .ssh sul lato server

client$ ssh user@server
server$ cd .ssh

3. Ora aggiungi la chiave pubblica del client all'elenco delle chiavi pubbliche conosciute sul server:

server$ cat id_dsa.pub >> authorized_keys
server$ chmod 640 authorized_keys
server$ rm id_dsa.pub
server$ exit

questo è tutto.

Test

Per verificare se ssh senza password funziona, usa la sintassi seguente:

$ ssh -l [user] [server]
Last login: Tue Apr 12 15:20:07 2007 from 192.168.0.100

o in alternativa

$ ssh [user]@[server]
Last login: Tue Oct 12 15:20:07 2007 from 192.168.0.100

Se il sistema non ti ha richiesto una password, tutto funziona correttamente.

Avviso

Assicurati di mantenere segreta la tua chiave privata (~/.ssh/id_dsa)! Sebbene sia sicuro fornire la tua chiave pubblica (~/.ssh/id_dsa.pub) al mondo, dovresti stare estremamente attento che nessun altro possa leggere la tua chiave privata (~/.ssh/id_dsa). Tutti coloro che hanno accesso alla chiave privata possono accedere a qualsiasi macchina su cui è installata la chiave pubblica corrispondente.


Linux
  1. Come modificare la porta SSH in Linux

  2. Come configurare l'autenticazione basata su chiave SSH in Linux

  3. Come impostare le chiavi SSH

  4. Come configurare le chiavi SSH per l'accesso ssh "senza password" in Linux

  5. Come utilizzare il comando ssh-keygen per configurare ssh senza password

Come configurare la chiave pubblica e privata SSH in Linux

Come configurare l'accesso senza password SSH in AlmaLinux

Come configurare le chiavi SSH su Debian 11 Linux

Come eseguire l'SSH sul server tramite Linux

Come generare e utilizzare la chiave SSH nel sistema Linux?

Come disabilitare il controllo della chiave host SSH in Linux