Dělají vám vaše veřejné klíče SSH potíže? Zkuste jedno z těchto řešení.

SSH je užitečný nástroj pro připojení ke vzdáleným počítačům, ale můžete narazit na chybu „Permission denied (publickey)“ týkající se vašeho veřejného klíče v Linuxu. Naštěstí existuje několik jednoduchých oprav, které můžete zkusit vyřešit.

Co je veřejný klíč?

Když vygenerujete pár klíčů pro SSH na Linuxu, dostanete veřejný klíč a soukromý klíč. Soukromý klíč s vámi zůstane jako přísně střežené tajemství, ale veřejný klíč bude přenesen na vzdálené servery, abyste se mohli přihlásit bez hesla. Když se připojíte, váš místní klient SSH porovná veřejný klíč se soukromým klíčem.

Výhodou této metody je, že musíte zadat pouze veřejný klíč. Dokud ponecháte svůj soukromý klíč v soukromí, mělo by vás to ochránit pro případ, že by byl váš veřejný klíč ohrožen. Veřejný klíč bude sám o sobě k ničemu.

OpenSSH, nejrozšířenější klient a server SSH ve světě open source, vyžaduje soubor obsahující jakýkoli veřejné klíče na vzdáleném počítači (.ssh/authorized_keys ve vašem domovském adresáři), abyste měli určitá oprávnění. Nebude to fungovat, pokud jsou oprávnění k zápisu nastavena pro jiné uživatele, což je známé jako „world-writable“. Protože název adresáře začíná tečkou (.), nezobrazí se v žádném výpisu ls, pokud nepoužijete příkaz

ls -A.

Oprávnění se mohou změnit, pokud byl soubor zkopírován z jiného počítače nebo jste jej vytvořili sami. Naštěstí to lze snadno opravit.

Zkontrolujte oprávnění veřejného klíče

Soubor autorizovaných klíčů je jednoduše prostý textový soubor, který obsahuje všechny veřejné klíče od klientů, které chcete, aby se mohli přihlásit ke svému účtu na vzdáleném počítači. Chcete-li zobrazit jeho oprávnění, použijte příkaz ls s volbou -l:

ls -l ~/.ssh/authorized_keys

Zobrazí se nastavení oprávnění pro vlastníka, skupinu a další uživatele. Dávejte pozor na posledních šest písmen v řetězci. Pokud v nich vidíte „w“, znamená to, že skupina nebo ostatní do ní mohou psát, což ji znejistí.

Budete chtít, abyste do tohoto souboru mohli zapisovat vy, ale ne skupina ani ostatní. Chcete-li poskytnout přístup správným uživatelům, můžete změnit oprávnění pomocí chmod.

Existují dva způsoby: číselně a symbolicky.

Číselný způsob je kratší, ale musíte si zapamatovat osmičková čísla oprávnění:

chmod 700 ~/.ssh/authorized_keys

Symbolická metoda je spíše mnemotechnická:

chmod go-w ~/.ssh/authorized_keys

Bezpečně zkopírujte klíče pomocí ssh-agent

Můžete ručně zkopírovat a vložit jakékoli veřejné klíče ze svého počítače do ~/.ssh/.authorized_keys ale použití programu ssh-agent sníží pravděpodobnost jakýchkoliv chyb oprávnění.

Chcete-li spustit ssh-agent, použijte tento příkaz:

eval "$(ssh-agent-s)"

Chcete-li se přihlásit ke vzdálenému serveru pomocí ssh-agent, použijte volbu -A s ssh

ssh -A [email protected]

Zkontrolujte nastavení sshd vzdáleného serveru

Pokud některá z těchto snah selže, možná budete muset provést nějaké změny konfigurace serveru sshd na vzdáleném počítači, pokud máte přístup root. Pokud ne, budete pravděpodobně muset kontaktovat správce systému, aby vám pomohl vyřešit jakékoli problémy s připojením SSH. Toto je metoda poslední možnosti, protože by mohla snížit zabezpečení vašeho systému.

Systémový konfigurační soubor pro sshd je /etc/ssh/sshd_config. Protože je ve vlastnictví root, budete k úpravě muset použít sudo. Chcete-li jej například upravit pomocí Vim:

sudo vim /etc/ssh/sshd_config

Chcete-li povolit sshd, aby vám umožnil přihlásit se, i když je váš soubor author_keys zapisovatelný do celého světa, nastavte v tomto souboru možnost „StrictModes“ na „no“.

Uložte jej a restartujte server SSH:

sudo systemctl restart sshd.service

Nyní můžete opravit chyby oprávnění veřejného klíče SSH

Můžete narazit na chyby týkající se veřejných klíčů SSH na vzdálených systémech. Naštěstí většinou stačí jen zkontrolovat a nastavit oprávnění k souboru, aby váš klíč nikdo jiný neviděl. Pro spolehlivější připojení můžete také použít ssh-agent. Jako poslední možnost můžete snížit přísnost serveru SSH.