Har dina offentliga SSH-nycklar det svårt för dig? Prova någon av dessa lösningar.

SSH är ett användbart verktyg för att ansluta till fjärrdatorer, men du kan stöta på ett "Permission denied (publickey)"-fel som involverar din publika nyckel på Linux. Lyckligtvis finns det några enkla fixar du kan prova för att felsöka det.

Vad är en offentlig nyckel?

När du genererar ett nyckelpar för SSH på Linux får du en offentlig nyckel och en privat nyckel. Den privata nyckeln kommer att förbli hos dig som en noga bevakad hemlighet, men den offentliga nyckeln är vad som kommer att överföras till fjärrservrar för att du ska kunna logga in utan lösenord. Din lokala SSH-klient kommer att matcha den publika nyckeln med den privata nyckeln när du ansluter.

Fördelen med denna metod är att du bara behöver lämna ut den publika nyckeln. Så länge du håller din privata nyckel privat bör detta hålla dig säker ifall din publika nyckel äventyras. Den publika nyckeln kommer att vara värdelös i sig.

OpenSSH, den mest använda SSH-klienten och servern i open source-världen, kräver att filen innehåller publika nycklar på fjärrdatorn (".ssh/authorized_keys" i din hemkatalog), för att ha vissa behörigheter. Det fungerar inte om skrivbehörigheterna är inställda för andra användare, vilket är känt som "världsskrivbart". Eftersom katalognamnet börjar med en punkt (.), kommer det inte att visas i några ls-listor om du inte använder kommando

instagram viewer
ls -A.

Behörigheterna kan ändras om filen kopierades över från en annan dator eller om du skapade den själv. Lyckligtvis är detta lätt att fixa.

Kontrollera dina offentliga nyckelbehörigheter

Authorized_keys-filen är helt enkelt en vanlig textfil som innehåller alla publika nycklar från klienter som du vill ska kunna logga in på ditt konto på fjärrmaskinen. För att se dess behörigheter, använd kommandot ls med alternativet -l:

ls -l ~/.ssh/authorized_keys

Detta visar behörighetsinställningarna för ägaren, gruppen och andra användare. Var uppmärksam på de sex sista bokstäverna i strängen. Om du ser "w" i dem betyder det att gruppen eller andra kan skriva till den, vilket gör det osäkert.

Du vill att den här filen ska vara skrivbar av dig, men inte av gruppen eller andra. För att ge åtkomst till rätt användare, du kan ändra behörigheter med chmod.

Det finns två sätt: numeriskt och symboliskt.

Den numeriska vägen är kortare, men du måste memorera de oktala behörighetsnumren:

chmod 700 ~/.ssh/authorized_keys

Den symboliska metoden är mer mnemonisk:

chmod go-w ~/.ssh/authorized_keys

Säker kopiering av nycklar med ssh-agent

Du kan manuellt kopiera och klistra in alla publika nycklar från din maskin i ~/.ssh/.authorized_keys fil, men att använda programmet ssh-agent minskar risken för eventuella behörighetsfel.

För att starta ssh-agent, använd detta kommando:

eval "$(ssh-agent-s)"

För att logga in på en fjärrserver med ssh-agent, använd alternativet -A med ssh

ssh -A [email protected]

Kontrollera fjärrserverns sshd-inställningar

Om något av dessa försök misslyckas kan du behöva göra några konfigurationsändringar på sshd-servern på fjärrdatorn om du har root-åtkomst. Om inte, måste du förmodligen kontakta systemadministratören för att hjälpa dig lösa eventuella SSH-anslutningsproblem. Detta är en sista utväg eftersom det kan göra ditt system mindre säkert.

Den systemomfattande konfigurationsfilen för sshd är /etc/ssh/sshd_config. Eftersom det ägs av root, måste du använda sudo för att redigera det. Till exempel, för att redigera den med Vim:

sudo vim /etc/ssh/sshd_config

För att aktivera sshd för att låta dig logga in även om din authorized_keys-fil är världsskrivbar, ställ in alternativet "StrictModes" till "no" i den här filen.

Spara den och starta om SSH-servern:

sudo systemctl restart sshd.service

Nu kan du åtgärda SSH Public Key Permissions-fel

Du kan stöta på fel angående offentliga SSH-nycklar på fjärrsystem. Lyckligtvis är allt du behöver göra för det mesta att kontrollera och ställa in filbehörigheterna så att ingen annan kan se din nyckel. Du kan också använda ssh-agent för mer pålitliga anslutningar. Som en sista utväg kan du göra SSH-servern mindre sträng.