Configurazione client
Impostare ~/.ssh/config
Configurare le voci host per ssh
è davvero semplice e ti farà risparmiare un sacco di problemi. Ecco un esempio:
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
In questo esempio, l'installazione si digitaloceanbox
e github
e github.com
in modo che possiamo fare i seguenti comandi:
ssh github
ssh digitaloceanbox
Se vogliamo accedere come un utente diverso da quello specificato nel file di configurazione, mettiamo semplicemente user@
all'inizio:
Generazione di ssh
chiavi
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
Si noti che ho specificato il percorso completo della chiave privata che voglio generare quando richiesto ssh-keygen
. Ho anche definito il commento ( -C
) che mi permette di identificare facilmente le chiavi su macchine remote.
Questo creerà due file:
.ssh/digitalocean-rsa
- Chiave privata . Non condividere mai questo .
.ssh/digitalocean-rsa.pub
- Chiave pubblica. Questo è ciò che memorizzi sul server per l'autenticazione.
Quando fornisci la ssh
chiave, assicurati che sia la .pub
versione !! Quando aggiungi al tuo ~/.ssh/config
, assicurati di aggiungere la chiave privata corretta che corrisponde alla chiave pubblica che hai aggiunto al sistema.
Configurazione del server
La maggior parte delle installazioni avrà l'autenticazione con chiave pubblica abilitata. Se inizi a fare tutte le cose volenti o nolenti, potresti riscontrare alcuni problemi, tuttavia. Nel punto in cui si trova l'OP nel loro problema, consiglio all'OP di eliminare la /root/.ssh/
directory per ricominciare.
Non è consigliabile utilizzare ssh
per accedere all'utente root sul sistema remoto. Si consiglia di ssh
accedere a un altro utente, quindi eseguire l'escalation alla radice utilizzando la password ( sudo su -
).
Aggiungi le chiavi all'host utilizzando ssh-copy-id
Indipendentemente dal fatto che si decida di creare un altro utente e utilizzarlo ssh
come tale utente o come utente root, il seguente è il modo consigliato di posizionare le ssh
chiavi su un server:
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Ciò consente sshd
di creare la directory e i file necessari con le autorizzazioni necessarie. Ciò significa che non hai alcuna possibilità di incasinare le autorizzazioni o di dover ricordare i dettagli. Basta usare lo strumento per caricare le chiavi.
Disabilita autenticazione password
Detto questo, una volta effettuata la chiave e verificato di essere in grado di connettersi utilizzando le chiavi, si consiglia di disabilitare l'autenticazione password sshd
e riavviare il servizio:
- modificare
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
E i nuovi utenti?
Se disabiliti l'autenticazione con password, come puoi digitare nuovi utenti? Un modo è quello di aggiungere i file modello alla /etc/skel
directory. Dopo aver assegnato la chiave a un utente, procedi come segue:
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
- Modifica tutti i file trovati in
/etc/skel/.ssh/
modo che siano vuoti, a meno che tu non voglia digitare automaticamente te stesso per ogni nuovo utente creato.
Quando crei nuovi utenti con sudo useradd -m newuser
, quell'utente avrà il .ssh/authorized_keys
, che puoi modificare e avrà le autorizzazioni appropriate.
Debug
Puoi guardare il sshd
file di registro per capire perché le connessioni falliscono o vengono rifiutate:
sudo tail -f /var/log/auth.log
Durante l'esecuzione di questo comando, utilizzare un altro terminale per tentare un accesso. Molte volte i messaggi forniti sono abbastanza buoni da aiutare a individuare il problema o trovare una soluzione online.