Vam javni ključi SSH povzročajo težave? Poskusite eno od teh rešitev.
SSH je uporabno orodje za povezovanje z oddaljenimi napravami, vendar lahko naletite na napako »Dovoljenje zavrnjeno (publickey)«, ki vključuje vaš javni ključ v Linuxu. Na srečo obstaja nekaj preprostih popravkov, s katerimi lahko poskusite odpraviti težavo.
Kaj je javni ključ?
Ko ustvarite par ključev za SSH v Linuxu, boste prejeli javni in zasebni ključ. Zasebni ključ bo ostal pri vas kot skrbno varovana skrivnost, javni ključ pa bo posredovan oddaljenim strežnikom, da se boste lahko prijavili brez gesla. Vaš lokalni odjemalec SSH bo povezal javni ključ z zasebnim ključem, ko se povežete.
Prednost te metode je, da morate dati samo javni ključ. Dokler ohranite svoj zasebni ključ zaseben, bi morali biti varni, če bi bil vaš javni ključ ogrožen. Javni ključ bo sam po sebi neuporaben.
OpenSSH, najbolj razširjen odjemalec in strežnik SSH v odprtokodnem svetu, zahteva datoteko, ki vsebuje javne ključe na oddaljenem računalniku (".ssh/authorized_keys" v vašem domačem imeniku), da imate določena dovoljenja. Ne bo delovalo, če so dovoljenja za pisanje nastavljena za druge uporabnike, kar je znano kot "svetovno zapisljivo". Ker se ime imenika začne s piko (.), ne bo prikazano v nobenem seznamu ls, razen če uporabite ukaz
je -A.Dovoljenja se lahko spremenijo, če je bila datoteka prekopirana iz drugega računalnika ali ste jo ustvarili sami. Na srečo je to enostavno popraviti.
Preverite svoja dovoljenja za javni ključ
Datoteka authorized_keys je preprosto datoteka z navadnim besedilom, ki vsebuje vse javne ključe strank, za katere želite, da se lahko prijavijo v svoj račun na oddaljenem računalniku. Če želite videti njegova dovoljenja, uporabite ukaz ls z možnostjo -l:
ls -l ~/.ssh/authorized_keys
To bo prikazalo nastavitve dovoljenj za lastnika, skupino in druge uporabnike. Bodite pozorni na zadnjih šest črk v nizu. Če v njih vidite "w", to pomeni, da ji lahko skupina ali drugi pišejo, zaradi česar je nevarna.
Želeli boste, da lahko v to datoteko pišete vi, ne pa skupina ali drugi. Če želite omogočiti dostop pravim uporabnikom, dovoljenja lahko spremenite s chmod.
Obstajata dva načina: numerično in simbolno.
Številčna pot je krajša, vendar si morate zapomniti osmiške številke dovoljenj:
chmod 700 ~/.ssh/authorized_keys
Simbolična metoda je bolj mnemonična:
chmod go-w ~/.ssh/authorized_keys
Varno kopirajte ključe s ssh-agentom
Poljubne javne ključe iz svoje naprave lahko ročno kopirate in prilepite v ~/.ssh/.authorized_keys datoteko, vendar bo uporaba programa ssh-agent zmanjšala možnosti morebitnih napak pri dovoljenjih.
Za zagon ssh-agenta uporabite ta ukaz:
eval "$(ssh-agent-s)"
Za prijavo v oddaljeni strežnik s ssh-agentom uporabite možnost -A s ssh
ssh -A [email protected]
Preverite nastavitve sshd oddaljenega strežnika
Če kateri koli od teh poskusov ne uspe, boste morda morali nekaj spremeniti konfiguracijo strežnika sshd na oddaljenem računalniku, če imate korenski dostop. Če ne, se boste verjetno morali obrniti na skrbnika sistema, da vam bo pomagal rešiti morebitne težave s povezavo SSH. To je zadnja možnost, saj lahko vaš sistem postane manj varen.
Sistemska konfiguracijska datoteka za sshd je /etc/ssh/sshd_config. Ker je v lasti root-ja, boste morali za urejanje uporabiti sudo. Na primer, če ga želite urediti z Vimom:
sudo vim /etc/ssh/sshd_config
Če želite omogočiti sshd, da se lahko prijavite, tudi če je vaša datoteka authorized_keys dovoljena za svetovno pisanje, nastavite možnost "StrictModes" na "ne" v tej datoteki.
Shranite in znova zaženite strežnik SSH:
sudo systemctl restart sshd.service
Zdaj lahko popravite napake dovoljenj javnega ključa SSH
V oddaljenih sistemih lahko naletite na napake v zvezi z javnimi ključi SSH. Na srečo je večino časa vse, kar morate storiti, preveriti in nastaviti dovoljenja za datoteke, tako da nihče drug ne more videti vašega ključa. Za bolj zanesljive povezave lahko uporabite tudi ssh-agent. V skrajnem primeru lahko strežnik SSH naredite manj strog.