Giver dine offentlige SSH-nøgler dig en hård tid? Prøv en af ​​disse løsninger.

SSH er et nyttigt værktøj til at oprette forbindelse til fjernmaskiner, men du kan støde på en "Permission denied (publickey)"-fejl, der involverer din offentlige nøgle på Linux. Heldigvis er der nogle nemme rettelser, du kan prøve for at fejlfinde.

Hvad er en offentlig nøgle?

Når du genererer et nøglepar til SSH på Linux, får du en offentlig nøgle og en privat nøgle. Den private nøgle forbliver hos dig som en nøje beskyttet hemmelighed, men den offentlige nøgle er det, der vil blive transmitteret til fjernservere, så du kan logge ind uden adgangskode. Din lokale SSH-klient vil matche den offentlige nøgle med den private nøgle, når du opretter forbindelse.

Fordelen ved denne metode er, at du kun skal udlevere den offentlige nøgle. Så længe du holder din private nøgle privat, bør dette holde dig sikker, hvis din offentlige nøgle bliver kompromitteret. Den offentlige nøgle vil være ubrugelig i sig selv.

OpenSSH, den mest udbredte SSH-klient og -server i open source-verdenen, kræver, at filen indeholder evt. offentlige nøgler på den eksterne maskine (".ssh/authorized_keys" i din hjemmemappe), for at have visse tilladelser. Det vil ikke fungere, hvis skrivetilladelserne er indstillet til andre brugere, hvilket er kendt som værende "verdensskrivbart". Fordi mappenavnet starter med et punktum (.), vises det ikke i nogen ls-fortegnelser, medmindre du bruger kommando

instagram viewer
ls -A.

Tilladelser kan ændre sig, hvis filen blev kopieret over fra en anden computer, eller du har oprettet den selv. Heldigvis er dette nemt at rette.

Tjek dine offentlige nøgletilladelser

Authorized_keys-filen er simpelthen en almindelig tekstfil, der indeholder alle de offentlige nøgler fra klienter, du ønsker for at kunne logge ind på din konto på den eksterne maskine. For at se dens tilladelser, brug kommandoen ls med -l muligheden:

ls -l ~/.ssh/authorized_keys

Dette vil vise tilladelsesindstillingerne for ejeren, gruppen og andre brugere. Vær opmærksom på de sidste seks bogstaver i strengen. Hvis du ser "w" i dem, betyder det, at gruppen eller andre kan skrive til den, hvilket gør den usikker.

Du vil have, at denne fil kan skrives af dig, men ikke af gruppen eller andre. For at give adgang til de korrekte brugere, du kan ændre tilladelser med chmod.

Der er to måder: numerisk og symbolsk.

Den numeriske måde er kortere, men du skal huske de oktale tilladelsesnumre:

chmod 700 ~/.ssh/authorized_keys

Den symbolske metode er mere mnemonisk:

chmod go-w ~/.ssh/authorized_keys

Sikker kopiering af nøgler ved hjælp af ssh-agent

Du kan manuelt kopiere og indsætte alle offentlige nøgler fra din maskine i ~/.ssh/.authorized_keys fil, men brug af programmet ssh-agent vil reducere chancerne for eventuelle tilladelsesfejl.

For at starte ssh-agent skal du bruge denne kommando:

eval "$(ssh-agent-s)"

For at logge ind på en ekstern server ved hjælp af ssh-agent skal du bruge -A-indstillingen med ssh

ssh -A [email protected]

Tjek fjernserverens sshd-indstillinger

Hvis nogen af ​​disse bestræbelser mislykkes, skal du muligvis foretage nogle konfigurationsændringer på sshd-serveren på fjernmaskinen, hvis du har root-adgang. Hvis ikke, bliver du sandsynligvis nødt til at kontakte systemadministratoren for at hjælpe dig med at løse eventuelle SSH-forbindelsesproblemer. Dette er en sidste udvej, fordi det kan gøre dit system mindre sikkert.

Den systemdækkende konfigurationsfil for sshd er /etc/ssh/sshd_config. Fordi det ejes af root, skal du bruge sudo til at redigere det. For eksempel, for at redigere det med Vim:

sudo vim /etc/ssh/sshd_config

For at gøre det muligt for sshd at lade dig logge ind, selvom din autoriserede_keys-fil er verdensomfattende, skal du indstille "StrictModes"-indstillingen til "nej" i denne fil.

Gem det og genstart SSH-serveren:

sudo systemctl restart sshd.service

Nu kan du rette fejl i SSH Public Key Permissions

Du kan løbe ind i fejl vedrørende offentlige SSH-nøgler på fjernsystemer. Heldigvis er det meste af tiden alt, hvad du skal gøre, at kontrollere og indstille filtilladelserne, så ingen andre kan se din nøgle. Du kan også bruge ssh-agent til mere pålidelige forbindelser. Som en sidste udvej kan du gøre SSH-serveren mindre stringent.