GNU/Linux >> Linux Esercitazione >  >> Linux

Genera chiavi SSH per l'accesso senza password in Ubuntu

SSH (Secure Shell) è un protocollo di rete crittografico utilizzato per stabilire connessioni sicure tra un client remoto e un server, utilizzando il TCP protocollo per la sicurezza e l'affidabilità.

Le connessioni basate su SSH supportano vari metodi di autenticazione, alcuni dei quali sono:

  • Autenticazione basata su password
  • Autenticazione basata su chiave

Per impostazione predefinita, la creazione di una nuova connessione SSH tra due macchine utilizzerà l'autenticazione basata su password. Ma se accedi spesso a un server dallo stesso client, potrebbe essere ingombrante e irritante digitare la password ogni volta che accedi al server.

Questo tutorial presenta l'altra autenticazione alternativa per l'accesso al server remoto, utilizzando chiavi pubbliche .

Diamo un'occhiata a come possiamo impostarlo sulle nostre macchine client e server particolari che utilizziamo frequentemente, in modo da poter accedere automaticamente da questa macchina in modo sicuro!

Verifica la presenza di chiavi SSH esistenti sulla macchina client

La prima parte riguarda la generazione di una coppia di chiavi pubblica-privata nel client macchina. La chiave pubblica viene in seguito copiata sul server e utilizzata per l'autenticazione.

Prima di impostare qualsiasi chiave SSH, assicuriamoci che non siano già presenti chiavi esistenti per questa combinazione client-server.

Eseguiamo questo script bash per verificare se il file esiste (in alternativa puoi digitarlo direttamente sul terminale)

if test -f ~/.ssh/id_*.pub; then
    echo "Found"
else
    echo "Not Found"
fi

Se ricevi "Non trovato", significa che non esiste un file di questo tipo e siamo pronti per creare una nuova chiave per questa connessione.

In caso contrario, puoi utilizzare direttamente le chiavi esistenti e saltare il passaggio successivo. Ma se non vuoi usare le vecchie chiavi, puoi rimuovere le vecchie chiavi e generarne di nuove seguendo il passaggio successivo.

Genera una nuova coppia di chiavi SSH per le macchine client-server

Il comando seguente genererà un nuovo 4096 bits coppia di chiavi SSH con il tuo ID (può essere qualsiasi cosa identificabile!) Come commento:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Dopo aver configurato la posizione della chiave e le passphrase eseguendo questo comando, avremo ora la nuova chiave generata per noi, insieme all'impronta digitale della chiave.

Ora, controlliamo se la chiave pubblica-privata è effettivamente presente, utilizzando ls .

ls ~/.ssh/id_*

Dovresti ottenere il seguente output :

/root/.ssh/id_rsa  /root/.ssh/id_rsa.pub

Ciò significa che id_rsa è la tua chiave privata e id_rsa.pub è la tua chiave pubblica.

NOTA :Mai condividi la tua chiave privata tra le macchine. Questo è il motivo per cui hai una chiave pubblica. Quindi possiamo copiare la stessa chiave pubblica su più server su ssh a, mantenendo la sicurezza aggiuntiva utilizzando la chiave privata sul tuo computer locale.

Copia la chiave pubblica sul Server

Dal momento che abbiamo la nostra coppia di chiavi SSH sul nostro client, per poter accedere al server remoto, dobbiamo copiare lì la chiave pubblica.

Possiamo usare scp per copiare i file sul nostro server, ma esiste un'alternativa migliore per ssh chiavi, utilizzando ssh-copy-id .

Puoi installare ssh-copy-id utilizzando il tuo gestore di pacchetti se non è disponibile.

ssh-copy-id server_username@server_ip

Dopo aver inserito la password del nome utente del server, saremo ora autenticati per accedere al server utilizzando le chiavi pubbliche.

L'output sarà simile a questo:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/client_user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
SERVER_USER@SERVER_IP's password: 


Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'SERVER_USER@SERVER_IP'"
and check to make sure that only the key(s) you wanted were added.

Ciò significa che possiamo usare ssh a questa macchina particolare dal nostro client con l'autenticazione basata su chiave aggiuntiva!

Per testarlo, prova ssh al server ora!

ssh server_user@server_ip

Debug di potenziali problemi

Ma alcuni di voi potrebbero ancora ricevere la richiesta della password da visualizzare, insieme alla passphrase basata sulla chiave! Cosa sta succedendo?

Un potenziale motivo è dettagliato qui. Sembra che potremmo non avere i permessi appropriati sul nostro ~/.ssh directory sul server remoto . I contenuti della HOME directory ~ , il ~/.ssh directory e il ~/.ssh/authorized_keys il file deve essere scrivibile solo da noi. In caso contrario, rileva che altri utenti possono accedere, ed è per questo che viene richiesta anche la password.

Controlliamo prima i permessi della nostra home directory.

Poiché possiamo solo scrivere, non è necessario modificare i permessi per questa directory. Allo stesso modo, guarda le modalità e cambia la modalità usando chmod .

Cambiamo i permessi per questi file e directory usando chmod -R ~/.ssh 700 ricorsivamente.

Ora, provalo per vedere se funziona.

Debug di potenziali problemi – Parte 2

Se ancora non riesci a farlo funzionare, questo thread menziona che alcune delle opzioni nel file di configurazione ssh potrebbero essere disabilitate.

Controlla /etc/ssh/sshd_config nel server per garantire che RSAAuthentication , PubkeyAuthentication e UsePAM le opzioni non sono disabilitate.

Inoltre, assicurati di impostare esplicitamente PasswordAuthentication no nella configurazione, per disabilitare l'autenticazione basata su password per il nostro utente.

Come puoi vedere, questo era davvero il mio caso! Il PubKeyAuthentication è stato anche disabilitato, e quindi mi ha richiesto la password, poiché la sessione non l'ha utilizzata come modalità di autenticazione principale!

Ho rimosso il commento da questa riga e ho riavviato ssh per applicare le modifiche.

sudo systemctl restart ssh

Ora, questo ha finalmente fatto funzionare l'autenticazione senza password per me! Si spera che anche tu abbia trovato una soluzione a questo punto.

Abbiamo finalmente configurato ssh lavorare senza password!

Conclusione

In questo tutorial, ti abbiamo mostrato come impostare ssh metodo di autenticazione basato su chiave pubblica e accedi a un server senza password!


Linux
  1. 3 modi per configurare SSH per la privacy

  2. Come impostare le chiavi SSH

  3. Come configurare le chiavi SSH su Ubuntu 16.04

  4. Come configurare le chiavi SSH su Ubuntu 18.04

  5. Come impostare le chiavi SSH per l'accesso SSH "chiave pubblica/privata" su Linux

Come configurare le chiavi SSH su Ubuntu 18.04

Come configurare le chiavi SSH su Ubuntu 20.04

Accesso SSH senza password in 3 semplici passaggi

Genera chiavi RSA con SSH usando PuTTYgen

Come migliorare la sicurezza SSH su Ubuntu 18.04

Client WinSCP per Ubuntu