Bezorgen uw openbare SSH-sleutels u problemen? Probeer een van deze oplossingen.

SSH is een handig hulpmiddel om verbinding te maken met externe machines, maar het kan zijn dat u een foutmelding 'Toestemming geweigerd (publickey)' tegenkomt met betrekking tot uw openbare sleutel op Linux. Gelukkig zijn er enkele eenvoudige oplossingen die u kunt proberen om het probleem op te lossen.

Wat is een publieke sleutel?

Wanneer u een sleutelpaar genereert voor SSH op Linux, krijgt u een openbare sleutel en een privésleutel. De privésleutel blijft bij u als een goed bewaard geheim, maar de openbare sleutel wordt naar externe servers verzonden, zodat u zonder wachtwoord kunt inloggen. Uw lokale SSH-client koppelt de openbare sleutel aan de privésleutel wanneer u verbinding maakt.

Het voordeel van deze methode is dat u alleen de publieke sleutel hoeft af te geven. Zolang u uw privésleutel privé houdt, zou dit u veilig moeten houden voor het geval uw openbare sleutel in gevaar komt. De publieke sleutel zal op zichzelf nutteloos zijn.

instagram viewer

OpenSSH, de meest gebruikte SSH-client en -server in de open source-wereld, vereist dat het bestand dit bevat openbare sleutels op de externe machine (".ssh/authorized_keys" in uw thuismap), om bepaalde machtigingen te hebben. Het werkt niet als de schrijfrechten zijn ingesteld voor andere gebruikers, wat bekend staat als 'wereldbeschrijfbaar'. Omdat de mapnaam begint met een punt (.), wordt deze niet weergegeven in ls-lijsten, tenzij u de commando ls-A.

Machtigingen kunnen veranderen als het bestand vanaf een andere computer is gekopieerd of als u het zelf hebt gemaakt. Gelukkig is dit eenvoudig op te lossen.

Controleer uw machtigingen voor openbare sleutels

Het geautoriseerde_sleutels-bestand is eenvoudigweg een tekstbestand dat alle openbare sleutels bevat van klanten waarmee u wilt kunnen inloggen op uw account op de externe machine. Om de machtigingen te zien, gebruik het ls-commando met de optie -l:

ls -l ~/.ssh/authorized_keys

Hier worden de machtigingsinstellingen voor de eigenaar, de groep en andere gebruikers weergegeven. Let op de laatste zes letters in de string. Als je er een "w" in ziet, betekent dit dat de groep of anderen ernaar kunnen schrijven, wat het onveilig maakt.

U wilt dat dit bestand door u kan worden geschreven, maar niet door de groep of anderen. Om toegang te geven aan de juiste gebruikers, je kunt de rechten wijzigen met chmod.

Er zijn twee manieren: numeriek en symbolisch.

De numerieke manier is korter, maar je moet de octale toestemmingsnummers onthouden:

chmod 700 ~/.ssh/authorized_keys

De symbolische methode is meer geheugensteuntje:

chmod go-w ~/.ssh/authorized_keys

Sleutels veilig kopiëren met ssh-agent

U kunt alle openbare sleutels van uw machine handmatig kopiëren en plakken in het ~/.ssh/.authorized_keys bestand, maar het gebruik van het ssh-agent-programma verkleint de kans op machtigingsfouten.

Gebruik deze opdracht om ssh-agent te starten:

eval "$(ssh-agent-s)"

Om in te loggen op een externe server met behulp van ssh-agent, gebruikt u de optie -A met ssh

ssh -A [email protected]

Controleer de sshd-instellingen van de externe server

Als een van deze pogingen mislukt, moet u mogelijk enkele configuratiewijzigingen aanbrengen in de sshd-server op de externe machine als u root-toegang heeft. Als dit niet het geval is, moet u waarschijnlijk contact opnemen met de systeembeheerder om u te helpen eventuele SSH-verbindingsproblemen op te lossen. Dit is een laatste redmiddel omdat het uw systeem minder veilig kan maken.

Het systeembrede configuratiebestand voor sshd is /etc/ssh/sshd_config. Omdat het eigendom is van root, moet je sudo gebruiken om het te bewerken. Om het bijvoorbeeld met Vim te bewerken:

sudo vim /etc/ssh/sshd_config

Om sshd in te schakelen zodat u kunt inloggen, zelfs als uw bestand met geautoriseerde_sleutels voor iedereen schrijfbaar is, stelt u de optie "StrictModes" in dit bestand in op "no".

Sla het op en start de SSH-server opnieuw op:

sudo systemctl restart sshd.service

Nu kunt u fouten met de machtigingen voor openbare sleutels in SSH oplossen

U kunt fouten tegenkomen met betrekking tot openbare SSH-sleutels op externe systemen. Gelukkig hoeft u meestal alleen maar de bestandsrechten te controleren en in te stellen, zodat niemand anders uw sleutel kan zien. U kunt ook ssh-agent gebruiken voor betrouwbaardere verbindingen. Als laatste redmiddel kunt u de SSH-server minder streng maken.