Zadaju li vam probleme vaši javni SSH ključevi? Isprobajte jedno od ovih rješenja.

SSH je koristan alat za povezivanje s udaljenim računalima, ali možete naići na pogrešku "Dozvola odbijena (publickey)" koja uključuje vaš javni ključ na Linuxu. Srećom, postoje neka jednostavna rješenja kojima možete pokušati riješiti problem.

Što je javni ključ?

Kada generirate par ključeva za SSH na Linuxu, dobit ćete javni ključ i privatni ključ. Privatni ključ ostat će s vama kao strogo čuvana tajna, ali javni ključ je ono što će se prenijeti udaljenim poslužiteljima kako biste se mogli prijaviti bez lozinke. Vaš lokalni SSH klijent će uskladiti javni ključ s privatnim ključem kada se povežete.

Prednost ove metode je u tome što morate dati samo javni ključ. Sve dok vaš privatni ključ bude privatan, to bi vas trebalo zaštititi u slučaju da vaš javni ključ bude ugrožen. Javni ključ će sam po sebi biti beskoristan.

OpenSSH, najčešće korišteni SSH klijent i poslužitelj u svijetu otvorenog koda, zahtijeva datoteku koja sadrži javnih ključeva na udaljenom računalu (".ssh/authorized_keys" u vašem početnom direktoriju), kako biste imali određena dopuštenja. Neće raditi ako su dopuštenja pisanja postavljena za druge korisnike, što je poznato kao "svjetski pisan". Budući da naziv imenika počinje točkom (.), neće se pojaviti ni u jednom ls popisu osim ako ne koristite naredba

je -A.

Dopuštenja se mogu promijeniti ako je datoteka kopirana s drugog računala ili ste je sami izradili. Srećom, to je lako popraviti.

Provjerite svoja dopuštenja za javni ključ

Datoteka authorized_keys jednostavno je obična tekstualna datoteka koja sadrži sve javne ključeve klijenata za koje želite da se mogu prijaviti na vaš račun na udaljenom računalu. Da biste vidjeli njegove dozvole, koristite naredbu ls s opcijom -l:

ls -l ~/.ssh/authorized_keys

Ovo će prikazati postavke dopuštenja za vlasnika, grupu i druge korisnike. Obratite pozornost na zadnjih šest slova u nizu. Ako u njima vidite "w", to znači da joj grupa ili drugi mogu pisati, što je čini nesigurnom.

Htjet ćete da ovu datoteku možete pisati vi, ali ne i grupa ili drugi. Da biste omogućili pristup ispravnim korisnicima, možete promijeniti dopuštenja s chmod.

Postoje dva načina: numerički i simbolički.

Numerički način je kraći, ali morate zapamtiti oktalne brojeve dopuštenja:

chmod 700 ~/.ssh/authorized_keys

Simbolička metoda je više mnemonička:

chmod go-w ~/.ssh/authorized_keys

Sigurno kopirajte ključeve pomoću ssh-agenta

Možete ručno kopirati i zalijepiti sve javne ključeve sa svog stroja u ~/.ssh/.autorizirani_ključevi datoteku, ali korištenje programa ssh-agent smanjit će šanse za bilo kakve pogreške u dopuštenjima.

Za pokretanje ssh-agenta koristite ovu naredbu:

eval "$(ssh-agent-s)"

Za prijavu na udaljeni poslužitelj koristeći ssh-agent, koristite opciju -A sa ssh

ssh -A [email protected]

Provjerite sshd postavke udaljenog poslužitelja

Ako bilo koji od ovih pokušaja ne uspije, možda ćete morati napraviti neke promjene konfiguracije sshd poslužitelja na udaljenom računalu ako imate root pristup. Ako ne, vjerojatno ćete morati stupiti u kontakt s administratorom sustava da vam pomogne u rješavanju problema sa SSH vezom. Ovo je krajnja metoda jer bi vaš sustav mogao učiniti manje sigurnim.

Konfiguracijska datoteka za cijeli sustav za sshd je /etc/ssh/sshd_config. Budući da je u vlasništvu roota, morat ćete koristiti sudo da biste ga uredili. Na primjer, da biste ga uredili pomoću Vima:

sudo vim /etc/ssh/sshd_config

Kako biste omogućili sshd da vam omogući prijavu čak i ako je vaša datoteka authorized_keys dostupna za svjetsko pisanje, postavite opciju "StrictModes" na "no" u ovoj datoteci.

Spremite ga i ponovno pokrenite SSH poslužitelj:

sudo systemctl restart sshd.service

Sada možete ispraviti pogreške dopuštenja javnog ključa SSH

Možete naići na pogreške u vezi SSH javnih ključeva na udaljenim sustavima. Srećom, većinu vremena sve što morate učiniti je provjeriti i postaviti dopuštenja datoteke tako da nitko drugi ne može vidjeti vaš ključ. Također možete koristiti ssh-agent za pouzdanije veze. U krajnjem slučaju, SSH poslužitelj možete učiniti manje strogim.