Le tue chiavi SSH pubbliche ti danno del filo da torcere? Prova una di queste soluzioni.
SSH è uno strumento utile per connettersi a macchine remote, ma potresti riscontrare un errore "Permesso negato (chiave pubblica)" che coinvolge la tua chiave pubblica su Linux. Fortunatamente, ci sono alcune semplici soluzioni che puoi provare per risolvere il problema.
Cos'è una chiave pubblica?
Quando generi una coppia di chiavi per SSH su Linux, ti verranno fornite una chiave pubblica e una chiave privata. La chiave privata rimarrà con te come un segreto gelosamente custodito, ma la chiave pubblica è ciò che verrà trasmesso ai server remoti per consentirti di accedere senza password. Il tuo client SSH locale abbinerà la chiave pubblica alla chiave privata quando ti connetti.
Il vantaggio di questo metodo è che devi solo fornire la chiave pubblica. Finché mantieni privata la tua chiave privata, questo dovrebbe mantenerti al sicuro nel caso in cui la tua chiave pubblica venga compromessa. La chiave pubblica sarà inutile da sola.
OpenSSH, il client e server SSH più utilizzato nel mondo open source, richiede il file contenente any chiavi pubbliche sul computer remoto (".ssh/authorized_keys" nella directory home), per avere determinate autorizzazioni. Non funzionerà se le autorizzazioni di scrittura sono impostate per altri utenti, che è noto come "scrivibile da tutti". Poiché il nome della directory inizia con un punto (.), non verrà visualizzato in nessun elenco ls a meno che non si utilizzi il file comando ls -A.
Le autorizzazioni potrebbero cambiare se il file è stato copiato da un altro computer o se lo hai creato tu stesso. Fortunatamente, questo è facile da risolvere.
Controlla i permessi della tua chiave pubblica
Il file Authorized_keys è semplicemente un file di testo semplice che contiene tutte le chiavi pubbliche dei client a cui desideri poter accedere al tuo account sul computer remoto. Per vedere le sue autorizzazioni, utilizzare il comando ls con l'opzione -l:
ls -l ~/.ssh/authorized_keys
Verranno visualizzate le impostazioni di autorizzazione per il proprietario, il gruppo e altri utenti. Presta attenzione alle ultime sei lettere della stringa. Se vedi "w" al loro interno, significa che il gruppo o altri possono scrivergli, rendendolo insicuro.
Vorrai che questo file sia scrivibile da te, ma non dal gruppo o da altri. Per consentire l'accesso agli utenti corretti, puoi modificare i permessi con chmod.
Ci sono due modi: numericamente e simbolicamente.
Il modo numerico è più breve, ma devi memorizzare i numeri di autorizzazione ottali:
chmod 700 ~/.ssh/authorized_keys
Il metodo simbolico è più mnemonico:
chmod go-w ~/.ssh/authorized_keys
Copia in modo sicuro le chiavi utilizzando ssh-agent
Puoi copiare e incollare manualmente qualsiasi chiave pubblica dal tuo computer nel file ~/.ssh/.authorized_keys file, ma l'utilizzo del programma ssh-agent ridurrà le possibilità di eventuali errori di autorizzazione.
Per avviare ssh-agent, utilizzare questo comando:
eval "$(ssh-agent-s)"
Per accedere a un server remoto utilizzando ssh-agent, utilizzare l'opzione -A con ssh
ssh -A [email protected]
Controlla le impostazioni sshd del server remoto
Se uno qualsiasi di questi tentativi fallisce, potrebbe essere necessario apportare alcune modifiche alla configurazione del server sshd sul computer remoto se si dispone dell'accesso root. In caso contrario, probabilmente dovrai contattare l'amministratore di sistema per aiutarti a risolvere eventuali problemi di connessione SSH. Questo è un metodo di ultima istanza perché potrebbe rendere il tuo sistema meno sicuro.
Il file di configurazione a livello di sistema per sshd è /etc/ssh/sshd_config. Poiché è di proprietà di root, dovrai utilizzare sudo per modificarlo. Ad esempio, per modificarlo con Vim:
sudo vim /etc/ssh/sshd_config
Per abilitare sshd in modo da consentirti l'accesso anche se il tuo file autorizzato_keys è scrivibile da tutti, imposta l'opzione "StrictModes" su "no" in questo file.
Salvalo e riavvia il server SSH:
sudo systemctl restart sshd.service
Ora puoi correggere gli errori di autorizzazione della chiave pubblica SSH
Potresti riscontrare errori relativi alle chiavi pubbliche SSH sui sistemi remoti. Fortunatamente, nella maggior parte dei casi tutto ciò che devi fare è controllare e impostare i permessi del file in modo che nessun altro possa vedere la tua chiave. Puoi anche utilizzare ssh-agent per connessioni più affidabili. Come ultima risorsa è possibile rendere il server SSH meno rigido.