How can you fix a “Permission denied (publickey)” SSH error on Linux?

Configurare noua (How To)

Situatie

SSH este un instrument util pentru conectarea la mașini la distanță, dar este posibil să întâlniți o eroare „Permisiune refuzată (cheie publică)” care implică cheia dumneavoastră publică pe Linux. Din fericire, există câteva soluții ușoare pe care le puteți încerca să o depanați.

Ce este o cheie publică? Când generați o pereche de chei pentru SSH pe Linux, vi se va da o cheie publică și o cheie privată. Cheia privată va rămâne cu dvs. ca un secret bine păzit, dar cheia publică este ceea ce va fi transmisă serverelor de la distanță pentru a vă permite să vă conectați fără o parolă. Clientul SSH local va potrivi cheia publică cu cheia privată atunci când vă conectați.

Solutie

Verificați permisiunile cheii publice

Fișierul authorized_keys este pur și simplu un fișier text simplu care conține toate cheile publice de la clienții pe care doriți să vă puteți conecta la contul dvs. pe mașina de la distanță. Pentru a-i vedea permisiunile, utilizați comanda ls cu opțiunea -l:

ls -l ~/.ssh/authorized_keys

Aceasta va afișa setările de permisiuni pentru proprietar, grup și alți utilizatori. Acordați atenție ultimelor șase litere din șir. Dacă vedeți „w” în ele, înseamnă că grupul sau alții îi pot scrie, făcându-l nesigur. Veți dori ca acest fișier să poată fi scris de dvs., dar nu de grup sau de alții. Pentru a oferi acces utilizatorilor corecti, puteți schimba permisiunile cu chmod. Există două moduri: numeric și simbolic.

Calea numerică este mai scurtă, dar trebuie să memorați numerele de permisiuni octale:

chmod 700 ~/.ssh/authorized_keys

Metoda simbolică este mai mnemonică:

chmod go-w ~/.ssh/authorized_keys

Copiați în siguranță cheile utilizând ssh-agent

Puteți copia și lipi manual orice cheie publică de pe computer în fișierul ~/.ssh/.authorized_keys, dar utilizarea programului ssh-agent va reduce șansele de erori de permisiuni. Pentru a porni ssh-agent, utilizați această comandă:

eval “$(ssh-agent-s)”

Pentru a vă conecta la un server la distanță folosind ssh-agent, utilizați opțiunea -A cu ssh

ssh -A user@example.com

Dacă oricare dintre aceste eforturi eșuează, poate fi necesar să faceți unele modificări de configurare la serverul sshd de pe mașina de la distanță dacă aveți acces root. Dacă nu, probabil că va trebui să luați legătura cu administratorul de sistem pentru a vă ajuta să rezolvați orice problemă de conexiune SSH.

Aceasta este o metodă de ultimă instanță, deoarece vă poate face sistemul mai puțin sigur. Fișierul de configurare la nivel de sistem pentru sshd este /etc/ssh/sshd_config. Deoarece este deținut de root, va trebui să utilizați sudo pentru a-l edita.

De exemplu, pentru a-l edita cu Vim:

sudo vim /etc/ssh/sshd_config

Pentru a permite sshd să vă permită să vă conectați, chiar dacă fișierul authorized_keys poate fi scris în întreaga lume, setați opțiunea „StrictModes” la „nu” în acest fișier.

Salvați-l și reporniți serverul SSH:

sudo systemctl restart sshd.service

Tip solutie

Permanent

Voteaza

(6 din 11 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?