Úvod
Po úpravě nastavení souvisejících s oprávněními na serveru SSH se zobrazí chyba SSH Permission denied. Obvyklé scénáře zahrnují instalaci nového balíčku nebo vytvoření nových uživatelů.
V tomto tutoriálu se dozvíte, jak odstranit chybu SSH Permission denied a znovu se připojit k vašemu SSH serveru.
Předpoklady
- Klient SSH na místním počítači a server SSH na vzdáleném systému
- Uživatelský účet pro přístup ke vzdálenému serveru (pro přihlášení na základě hesla)
- Uživatelský účet s sudo nebo root privilegia
Co způsobuje odepřeno oprávnění SSH (publickey,gssapi-keyex,gssapi-with-mic)?
Při pokusu o připojení SSH na server se zobrazí chyba SSH Permission denied:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
Po příkazu Permission denied obsahuje závorka pokusy o metody ověřování, které selhaly při zahájení připojení. Chyba naznačuje, že problémem je veřejný klíč, což je zavádějící.
Jedním z důvodů chyby může být sshd_config
, soubor, který obsahuje konfiguraci serveru SSH. Další možností je, že authorized_keys
soubor má nedostatečná oprávnění. Tento soubor obsahuje seznam veřejných klíčů pro klienty, kteří mají povoleno SSH na server. V důsledku toho neschopnost systému číst ze souboru vede k chybě Permission denied.
Jak opravit SSH Permission denied
Obě řešení obsahují kroky, které musíte provést na straně serveru. Začněte otevřením terminálu na vašem serveru a pokračujte jedním z níže uvedených řešení.
Řešení 1:Povolte ověřování hesla
Pokud chcete pro přístup na SSH server použít heslo, řešením pro opravu chyby Permission denied je povolit přihlášení pomocí hesla v sshd_config
soubor.
Chcete-li to provést, otevřete soubor v textovém editoru. Tento příklad používá nano editor:
sudo nano /etc/ssh/sshd_config
V souboru najděte PasswordAuthentication
řádek a ujistěte se, že končí yes
.
Najděte ChallengeResponseAuthentication
a deaktivujte ji přidáním no
.
Pokud jsou řádky zakomentovány, odstraňte křížek #
odkomentovat je.
Uložte soubor a ukončete.
Restartujte službu SSH zadáním následujícího příkazu:
sudo systemctl restart sshd
Řešení 2:Změňte oprávnění systému souborů
Použití přihlášení na základě hesla jako metody ověřování SSH se nedoporučuje z důvodu bezpečnostních problémů. Proto může být výhodnější následující řešení, protože řeší problémy s metodou ověřování pomocí veřejného klíče.
Nejprve otevřete sshd_config
soubor pomocí textového editoru:
sudo nano /etc/ssh/sshd_config
V souboru se ujistěte, že jsou následující možnosti nastaveny takto:
PermitRootLogin no
PubkeyAuthentication yes
Zakomentujte možnosti související s GSSAPI přidáním znaku hash na začátek řádku:
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials no
Zkontrolujte také UsePAM
řádek je nastaven na yes
:
UsePAM yes
Uložte soubor a restartujte službu sshd:
systemctl restart sshd
Nyní přejděte do své domovské složky a zkontrolujte oprávnění:
ls -ld
Pokud vaše oprávnění vlastníka nejsou nastavena na čtení, zápis a spouštění (drwx------
), použijte k jejich změně příkaz chmod:
chmod 0700 /home/[your-username]
Nyní přejděte na .ssh
složku a znovu zkontrolujte oprávnění:
ls -ld
Tento adresář by měl mít také oprávnění ke čtení, zápisu a spouštění pro vlastníka souboru. Chcete-li je vynutit, použijte chmod
znovu:
chmod 0700 /home/your_home/.ssh
Soubor .ssh
složka obsahuje authorized_keys
soubor. Zkontrolujte jeho oprávnění pomocí:
ls -ld authorized_keys
Vlastník souboru by měl mít oprávnění ke čtení a zápisu. Chcete-li je nastavit, použijte:
chmod 0600 /home/[username]/.ssh/authorized_keys
Nyní se zkuste znovu přihlásit pomocí páru klíčů. Níže uvedený výstup ukazuje úspěšný pokus o přihlášení.