Robia vám vaše verejné kľúče SSH problémy? Vyskúšajte jedno z týchto riešení.
SSH je užitočný nástroj na pripojenie k vzdialeným počítačom, ale môžete sa stretnúť s chybou „Permission denied (publickey)“ týkajúcou sa vášho verejného kľúča v systéme Linux. Našťastie existuje niekoľko jednoduchých opráv, ktoré môžete skúsiť vyriešiť.
Čo je verejný kľúč?
Keď vygenerujete pár kľúčov pre SSH v systéme Linux, dostanete verejný kľúč a súkromný kľúč. Súkromný kľúč vám zostane ako prísne strážené tajomstvo, ale verejný kľúč sa prenesie na vzdialené servery, aby ste sa mohli prihlásiť bez hesla. Váš lokálny klient SSH po pripojení zhoduje verejný kľúč so súkromným kľúčom.
Výhodou tejto metódy je, že musíte vydať iba verejný kľúč. Pokiaľ ponecháte svoj súkromný kľúč v súkromí, malo by vás to ochrániť v prípade, že by bol váš verejný kľúč ohrozený. Verejný kľúč bude sám o sebe zbytočný.
OpenSSH, najpoužívanejší klient a server SSH vo svete otvoreného zdroja, vyžaduje súbor obsahujúci ľubovoľný verejné kľúče na vzdialenom počítači (.ssh/authorized_keys“ vo vašom domovskom adresári), aby ste mali určité povolenia. Nebude to fungovať, ak sú povolenia na zápis nastavené pre iných používateľov, čo je známe ako „svetovo zapisovateľné“. Pretože názov adresára začína bodkou (.), nezobrazí sa v žiadnom výpise ls, pokiaľ nepoužijete príkaz
ls -A.Povolenia sa môžu zmeniť, ak bol súbor skopírovaný z iného počítača alebo ste ho vytvorili sami. Našťastie sa to dá ľahko opraviť.
Skontrolujte svoje povolenia verejného kľúča
Súbor autorizované_kľúče je jednoducho obyčajný textový súbor, ktorý obsahuje všetky verejné kľúče od klientov, ktorým sa chcete dať prihlásiť do svojho účtu na vzdialenom počítači. Ak chcete zobraziť jeho povolenia, použite príkaz ls s možnosťou -l:
ls -l ~/.ssh/authorized_keys
Zobrazia sa nastavenia povolení pre vlastníka, skupinu a ostatných používateľov. Venujte pozornosť posledným šiestim písmenám v reťazci. Ak v nich vidíte „w“, znamená to, že skupina alebo iní jej môžu písať, čím sa stáva neistým.
Budete chcieť, aby ste do tohto súboru mohli zapisovať vy, ale nie skupina alebo iní. Ak chcete poskytnúť prístup správnym používateľom, môžete zmeniť povolenia pomocou chmod.
Existujú dva spôsoby: číselne a symbolicky.
Číselný spôsob je kratší, ale musíte si zapamätať osmičkové čísla povolení:
chmod 700 ~/.ssh/authorized_keys
Symbolická metóda je viac mnemotechnická:
chmod go-w ~/.ssh/authorized_keys
Bezpečne kopírujte kľúče pomocou ssh-agent
Môžete manuálne skopírovať a prilepiť akékoľvek verejné kľúče z vášho počítača do ~/.ssh/.authorized_keys ale použitie programu ssh-agent zníži pravdepodobnosť akýchkoľvek chýb oprávnení.
Ak chcete spustiť ssh-agent, použite tento príkaz:
eval "$(ssh-agent-s)"
Ak sa chcete prihlásiť na vzdialený server pomocou ssh-agenta, použite voľbu -A s ssh
ssh -A [email protected]
Skontrolujte nastavenia sshd vzdialeného servera
Ak niektoré z týchto snáh zlyhá, možno budete musieť vykonať nejaké zmeny v konfigurácii servera sshd na vzdialenom počítači, ak máte prístup root. Ak nie, pravdepodobne budete musieť kontaktovať správcu systému, aby vám pomohol vyriešiť akékoľvek problémy s pripojením SSH. Toto je posledná možnosť, pretože môže spôsobiť, že váš systém bude menej bezpečný.
Celosystémový konfiguračný súbor pre sshd je /etc/ssh/sshd_config. Keďže ho vlastní root, na jeho úpravu budete musieť použiť sudo. Napríklad, ak ho chcete upraviť pomocou Vim:
sudo vim /etc/ssh/sshd_config
Ak chcete povoliť sshd, aby vám umožnilo prihlásiť sa, aj keď je váš súbor author_keys zapisovateľný do celého sveta, nastavte v tomto súbore možnosť „StrictModes“ na „no“.
Uložte ho a reštartujte server SSH:
sudo systemctl restart sshd.service
Teraz môžete opraviť chyby povolení verejného kľúča SSH
Môžete naraziť na chyby týkajúce sa verejných kľúčov SSH na vzdialených systémoch. Našťastie väčšinou stačí len skontrolovať a nastaviť oprávnenia súboru tak, aby váš kľúč nikto iný nevidel. Pre spoľahlivejšie pripojenia môžete použiť aj ssh-agent. Ako poslednú možnosť môžete znížiť prísnosť servera SSH.