2018-02-18 05:10:44 +0000 2018-02-18 05:10:44 +0000
122
122

Windows SSH: Rechten voor 'private-key' zijn te open

Ik heb OpenSSH 7.6 geïnstalleerd in Windows 7 om te testen. SSH client & server werken prima totdat ik probeerde toegang te krijgen tot een van mijn AWS EC2 boxen vanaf dit Windows.

Het lijkt erop dat ik de rechten op het private key bestand moet veranderen. Dit kan gemakkelijk gedaan worden op unix/linux met het chmod commando.

Hoe zit het met windows?

private-key.ppm is rechtstreeks gekopieerd van AWS en ik denk de permissie ook.

C:\>ssh -V
OpenSSH_7.6p1, LibreSSL 2.5.3

C:\>ver

Microsoft Windows [Version 6.1.7601]

C:\>

C:\>ssh ubuntu@192.168.0.1 -i private-key.ppk
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'private-key.ppk' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "private-key.ppk": bad permissions
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>
C:\>
C:\>ssh ubuntu@192.168.0.1 -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>

Antwoorden (14)

150
150
150
2018-02-18 08:57:27 +0000

U lokaliseert het bestand in Windows Verkenner, klikt er met de rechtermuisknop op en selecteert “Eigenschappen”. Navigeer naar het tabblad “Beveiliging” en klik op “Geavanceerd”.

Verander de eigenaar in jou, schakel overerving uit en verwijder alle permissies. Geef jezelf dan “Volledige controle” en sla de rechten op. Nu zal SSH niet meer klagen over te open bestandstoestemmingen.

Het zou er uiteindelijk zo uit moeten zien:

29
29
29
2018-06-08 15:34:57 +0000

Sleutels mogen alleen toegankelijk zijn voor de gebruiker voor wie ze bedoeld zijn en voor geen enkele andere account, dienst of groep.

  • GUI:
  • [Bestand] Eigenschappen - Beveiliging - Geavanceerd
  • Stel Eigenaar in op de gebruiker van de sleutel
  • Verwijder alle gebruikers, groepen en diensten, uitgezonderd de gebruiker van de sleutel, onder Permission Entries
  • Stel de gebruiker van de sleutel in op Full Control

  • CLI:

15
15
15
2018-09-08 13:27:16 +0000

In aanvulling op het antwoord van ibug. Omdat ik het ubuntu systeem binnen windows gebruikte om het ssh commando uit te voeren. Het werkte nog steeds niet. Dus ik deed

sudo ssh ...

en toen werkte het

5
5
5
2018-04-05 11:53:43 +0000

Ik had hetzelfde probleem, en het lijkt te maken te hebben met de versie van SSH die je gebruikt.

Als ik

where ssh

typ, krijg ik…

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\Git\usr\bin\ssh.exe

Als ik ssh -V op beide locaties uitvoer, krijg ik

OpenSSH_7.5p1, without OpenSSL
OpenSSH_7.3p1, OpenSSL 1.0.2k 26 Jan 2017

…respectievelijk

Dus, als ik ssh uitvoer vanuit de git/bin directory, werkt het prima en klaagt het niet over de permissies, maar als ik dezelfde commandoregel uitvoer, met de vorige installatie van SSH, komt het terug met dit.

Load key "t:\mykeys\rich-private.ppk": invalid format
banana@127.0.0.127: Permission denied (publickey).

ps. de permissies op het bestand zijn alleen volledige toegang voor mezelf, en niets anders.

5
5
5
2019-10-04 13:28:46 +0000

gebruik onderstaand commando op uw sleutel het werkt op Windows

icacls .\private.key /inheritance:r
icacls .\private.key /grant:r "%username%":"(R)"
4
4
4
2019-09-06 18:17:27 +0000

Ik had een soortgelijk probleem, maar ik was op het werk en heb niet de mogelijkheid om de bestandsrechten op mijn werk computer te veranderen. Wat je moet doen is WSL installeren en dan de sleutel kopiëren naar de verborgen ssh directory in WSL:

cp <path to your key> ~/.ssh/<name of your key>

Nu zou je in staat moeten zijn om de permissies normaal te wijzigen.

sudo chmod 600 ~/.ssh/<your key's name>

Dan ssh met WSL:

ssh -i ~/.ssh/<name of your key> <username>@<ip address>
3
3
3
2019-02-16 21:58:34 +0000
2
2
2
2019-08-12 12:39:01 +0000

Je kunt icacls in windows gebruiken in plaats van chmod om de bestandsrechten aan te passen. Om de huidige gebruiker leesrechten te geven en al het andere te verwijderen,

icacls <file name> /inheritance:r
icacls <file name> /grant:r "%username%":"(R)"
1
1
1
2019-10-03 21:07:46 +0000

Dit is slechts een gescripte versie van @JW0914’s CLI antwoord, dus upvote hem eerst en vooral. Het is ook mijn eerste PowerShell script, dus suggesties zijn welkom.

# DO the following in powerhsell if not already done:
# Set-ExecutionPolicy RemoteSigned

# NOTE: edit the path in this command if needed
$sshFiles=Get-ChildItem -Path C:\DevContainerHome\.ssh -Force

$sshFiles | % {
  $key = $_
  & icacls $key /c /t /inheritance:d
  & icacls $key /c /t /grant %username%:F
  & icacls $key /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
}

# Verify:
$sshFiles | % {
  icacls $_
}
1
1
1
2019-11-28 14:45:28 +0000

Een enkele regel in CMD zou de truc kunnen doen (zoals hier beschreven: https://serverfault.com/a/883338/550334 ), d.w.z. de sleutel toevoegen vanaf stdin in plaats van de permissons te veranderen:

cat /path/to/permission_file | ssh-add -k

Om te controleren of de sleutel is toegevoegd:

ssh-add -l
0
0
0
2019-10-29 04:30:11 +0000

Gebruik Mingw-w64.

Infos: http://mingw-w64.org/doku.php

Downloaden met Git voor Windows, of direct.

Beschikbaar hier: https://github.com/mirror/mingw-w64

git clone https://github.com/mirror/mingw-w64

Het heeft ook andere handige Linux commando’s zoals tar en gzip.

0
0
0
2019-11-26 06:10:29 +0000

Ik ben een Window gebruiker, gebruik de Windows bash en volgde alle stappen om toestemming in te stellen met Windows GUI, en het werkt nog steeds niet en het klaagt:

Permissions 0555 for 'my_ssh.pem' are too open.
It is required that your private key files are NOT accessible by others.

Ik heb sudo toegevoegd aan het begin van het ssh commando en het werkt gewoon. Hopelijk helpt dit anderen.

0
0
0
2020-02-24 23:03:22 +0000

Ik kon geen van deze antwoorden aan de praat krijgen wegens toestemmingsproblemen, dus ik zal mijn oplossing delen:

  1. Ga naar C:\Users\UserName.ssh

  2. Kopieer en plak het id_rsa bestand

  3. Hernoem het naar iets anders, b.v. example

    1. Open het bestand met de nieuwe naam example en vervang de sleutel door je eigen privésleutel
  4. Open het bestand met de nieuwe naam cd en vervang het door je eigen sleutel

. ssh -i example example@127.0.0.1 naar die directory

  1. Doe 0x6& en voer uw wachtwoord in.
-1
-1
-1
2019-02-08 14:20:33 +0000

Antwoord door iBug werkt prima! Je kunt dat volgen en van dit probleem afkomen.

Maar er zijn een paar dingen die gewist moeten worden omdat ik problemen had met het instellen van de rechten en het duurde een paar minuten voordat ik het probleem doorhad!

Volgens iBug’s antwoord, verwijder je alle machtigingen, maar hoe stel je Full Control toestemming voor jezelf? dat is waar ik vast kwam te zitten in het begin als ik wist niet hoe dat te doen.

Na het uitschakelen van Inheritance, zul je in staat zijn om alle toegestane gebruikers of groepen te verwijderen.

Als je daarmee klaar bent,

Klik op Add en dan op Set a Principal en System in het veld onderaan en klik dan op Administrators.

Het zal de naam laden als de gebruiker bestaat. Klik dan op your email addredd > Type check names > Basis Machtigingen OK > Allow

Dit zal de volledige machtiging instellen voor SYSTEM, Beheerders en Uw Gebruiker.

Probeer daarna te ssh-en met die sleutel. Het zou nu opgelost moeten zijn.

Ik had hetzelfde probleem en ik heb het met deze methode opgelost. Als er een gebruiker of groep is met die naam, dan wordt die geladen.

-Screenhots- Permission Entries Select a Principal/ Select User or Groups