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

Windows SSH: Uprawnienia dla 'private-key' są zbyt otwarte

Mam OpenSSH 7.6 zainstalowany w Windows 7 do celów testowych. Klient i serwer SSH działają bez zarzutu, dopóki nie spróbowałem uzyskać dostępu do jednego z moich serwerów AWS EC2 z tego okna.

Wygląda na to, że muszę zmienić uprawnienia na pliku klucza prywatnego. Można to łatwo zrobić w systemie unix/linux za pomocą polecenia chmod.

A co z Windows?

private-key.ppm jest skopiowany bezpośrednio z AWS i domyślam się, że uprawnienia również.

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:\>

Odpowiedzi (14)

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

Znajdujemy plik w Eksploratorze Windows, klikamy na niego prawym przyciskiem myszy i wybieramy “Właściwości”. Przejdź do zakładki “Zabezpieczenia” i kliknij “Zaawansowane”.

Zmień właściciela na Ciebie, wyłącz dziedziczenie i usuń wszystkie uprawnienia. Następnie nadaj sobie “Pełną kontrolę” i zapisz uprawnienia. Teraz SSH nie będzie już narzekał na zbyt otwarte uprawnienia do plików.

Powinno to wyglądać tak:

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

Klucze muszą być dostępne tylko dla użytkownika, dla którego są przeznaczone i dla żadnego innego konta, usługi lub grupy.

  • GUI:
  • [Plik] Właściwości - Zabezpieczenia - Zaawansowane
  • Ustaw Właściciela na użytkownika klucza
  • Usuń wszystkich użytkowników, grupy i usługi, poza użytkownikiem klucza, pod Permission Entries
  • Ustaw użytkownika klucza na Pełną Kontrolę_

  • CLI:.

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

W uzupełnieniu do odpowiedzi udzielonej przez ibug. Ponieważ używałem systemu ubuntu wewnątrz windows do uruchomienia komendy ssh. To wciąż nie działało. Więc zrobiłem

sudo ssh ...

i wtedy zadziałało.

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

Miałem ten sam problem i wydaje się, że jest on związany z wersją SSH, którą używasz.

Jeśli wpiszę

where ssh

otrzymam…

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

Kiedy uruchamiam ssh -V w obu lokalizacjach, dostaję

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

…odpowiednio

Tak więc, kiedy uruchamiam ssh z katalogu git/bin, działa dobrze i nie narzeka na uprawnienia, ale uruchamiając tę samą linię poleceń, używając poprzedniej instalacji SSH, wraca z tym.

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

ps. uprawnienia do pliku to tylko pełny dostęp dla mnie, i nic więcej.

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

użyj poniższej komendy na swoim kluczu, działa ona na windows

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

Miałem podobny problem, ale byłem w pracy i nie mam możliwości zmiany uprawnień do plików na moim komputerze służbowym. To co musisz zrobić to zainstalować WSL następnie skopiować swój klucz do ukrytego katalogu ssh w WSL:

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

Teraz powinieneś być w stanie normalnie modyfikować uprawnienia.

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

Następnie ssh używając 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

Możesz użyć icacls w windows zamiast chmod, aby dostosować uprawnienia do plików. Aby nadać bieżącemu użytkownikowi uprawnienia do odczytu i usunąć wszystko inne,

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

Jest to tylko skryptowa wersja odpowiedzi CLI @JW0914, więc upvote go przede wszystkim. Jest to również mój pierwszy skrypt PowerShell, więc sugestie mile widziane.

# 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

Jedna linia w CMD może załatwić sprawę (jak tutaj: https://serverfault.com/a/883338/550334 ), tzn. dodanie klucza ze stdin zamiast zmiany permissonów:

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

Aby sprawdzić, czy klucz został dodany:

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

Użyj Mingw-w64.

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

Pobierz z Git dla Windows, lub bezpośrednio.

Dostępne tutaj: https://github.com/mirror/mingw-w64

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

Posiada również inne przydatne komendy linuksowe jak tar i gzip.

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

Jestem użytkownikiem Windowsa, używam basha i wykonałem wszystkie kroki, aby ustawić uprawnienia za pomocą GUI Windowsa, a to nadal nie działa i narzeka:

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

The Dodałem sudo z przodu polecenia ssh i to po prostu działa. Mam nadzieję, że jest to pomocne dla innych.

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

Nie mogłem uzyskać żadnej z tych odpowiedzi pracujących dla mnie z powodu problemów z uprawnieniami, więc podzielę się moim rozwiązaniem:

  1. Przejdź do C:\Users\UserName.ssh

  2. Skopiuj i wklej plik id_rsa

  3. Zmień jego nazwę na coś innego, np. example

  4. Otwórz plik example o zmienionej nazwie i zastąp klucz swoim własnym kluczem prywatnym

  5. Wejdź cd do tego katalogu

  6. Wykonaj ssh -i example example@127.0.0.1 i wprowadź swoje hasło.

-1
-1
-1
2019-02-08 14:20:33 +0000

Odpowiedź iBug działa dobrze! Możesz się do tego zastosować i pozbyć się tego problemu.

Ale jest kilka rzeczy, które muszą zostać wyczyszczone, ponieważ napotkałem problemy podczas ustawiania uprawnień i zajęło mi kilka minut, aby zrozumieć problem!

Podążając za odpowiedzią iBug'a, usuniesz wszystkie uprawnienia, ale jak ustawić uprawnienia Full Control dla siebie? właśnie tam utknąłem na początku, ponieważ nie wiedziałem jak to zrobić.

Po wyłączeniu dziedziczenia, będziesz mógł usunąć wszystkich dozwolonych użytkowników lub grupy.

Po wykonaniu tych czynności,

Kliknij na Add następnie kliknij na Set a Principal wpisz System i Administrators i your email addredd w polu na dole i kliknij na check names.

Zostanie załadowana nazwa, jeśli użytkownik istnieje. Następnie kliknij na OK > Type Allow > Basic Permisons Full Control > Okay

To ustawi uprawnienia Full Control dla SYSTEM, Administratorów i Twojego użytkownika.

Po tym spróbuj ssh używając tego klucza. Teraz problem powinien zostać rozwiązany.

Miałem ten sam problem i rozwiązałem go za pomocą tej metody. Jeśli istnieje jakiś użytkownik lub grupa o tej nazwie, to zostanie ona załadowana.

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