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

Windows SSH: разрешения для 'приватного ключа' слишком открыты.

В целях тестирования я установил OpenSSH 7.6 в Windows 7. SSH клиент и сервер работают просто отлично, пока я не попробовал получить доступ к одному из моих AWS EC2 модулей из этого окна.

Кажется, мне нужно изменить разрешение на файл приватного ключа. Это можно легко сделать на unix/linux с помощью команды chmod.

А как же окна?

privatekey.ppm копируется непосредственно из AWS, и, думаю, разрешение тоже.

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

Ответы (14)

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

Вы находите файл в проводнике Windows Explorer, щелкните на нем правой кнопкой мыши и выберите “Свойства”. Перейдите на вкладку “Безопасность” и нажмите “Дополнительно”.

Измените владельца, отключите наследование и удалите все разрешения. Затем задайте себе “Полный контроль” и сохраните права. Теперь SSH больше не будет жаловаться на то, что разрешения на файлы слишком открыты.

В итоге все должно выглядеть так:

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

Ключи должны быть доступны только тому пользователю, для которого они предназначены, и никакая другая учетная запись, служба или группа не должна быть доступна.

  • GUI:
  • [Файл] Свойства - Безопасность - Дополнительно
  • Установите Owner для пользователя ключа
  • Удалить всех пользователей, группы и службы, за исключением пользователя ключа, в разделе Ввод разрешений
  • Установить пользователя ключа в Full Control

  • CLI:.

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

В дополнение к ответу, предоставленному ibug. Так как я использовал систему ubuntu внутри windows для выполнения команды ssh. Она все еще не работала. Так что я сделал

sudo ssh ...

, а потом все заработало.

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

У меня была та же проблема, и, похоже, она связана с версией SSH, которую вы запускаете.

Если я набираю

where ssh

я получаю…

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

Когда я запускаю ssh -V в обоих местах, я получаю

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

…соответственно

Таким образом, когда я запускаю ssh из каталога git/bin, он работает нормально и не жалуется на разрешения, но выполняя одну и ту же командную строку, используя предыдущую установку SSH, он возвращается с этим.

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

ps. разрешения на файл - это просто полный доступ для себя, и больше ничего.

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

используйте нижеприведенную команду на вашем ключе, она работает на окнах

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

У меня была похожая проблема, но я был на работе и не имел возможности изменять файловые разрешения на рабочем компьютере. Вам нужно установить [ WSL ]0x3 и затем скопировать ключ в скрытый каталог ssh в WSL:

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

Теперь вы должны иметь возможность изменять разрешения в обычном режиме.

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

Затем ssh с помощью 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

Вы можете использовать иконки в окнах вместо chmod для настройки прав доступа к файлам. Чтобы дать текущему пользователю права на чтение и удалить все остальное,

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

Это всего лишь скриптовая версия CLI-ответа @JW0914, так что в первую очередь проголосуйте за него. Кроме того, это мой первый сценарий PowerShell, так что предложения приветствуются.

# 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

Одиночная строка в CMD может выполнить трюк (как описано здесь: https://serverfault.com/a/883338/550334 ), т.е. добавить ключ из stdin вместо изменения permissons:

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

Проверка того, был ли добавлен ключ:

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

Используйте Mingw-w64.

Инфо: http://mingw-w64.org/doku.php

Загрузка с Git'ом для Windows или напрямую.

** Доступно здесь:** https://github.com/mirror/mingw-w64

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

В нём также есть другие полезные команды Linux, такие как tar и gzip.

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

Я пользователь Window, использую Windows’s bash и выполнил все шаги по установке разрешений с помощью Windows GUI, но он все еще не работает, и он жалуется:

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

Я добавил sudo в начале команды ssh, и она просто работает. Надеюсь, это поможет другим.

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

Я не смог получить ни одного из этих ответов из-за проблем с разрешением, так что я поделюсь своим решением:

  1. Переходим к C:\Users\UserName.ssh

  2. Скопируйте и вставьте файл id_rsa

  3. Переименуйте его во что-нибудь другое, например, example

  4. Откройте переименованный файл example и замените ключ на свой собственный закрытый ключ

  5. cd в этот каталог

  6. Сделайте ssh -i example example@127.0.0.1 и введите пароль.

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

Ответ от iBug работает отлично! Вы можете проследить за этим и избавиться от этой проблемы.

Но есть несколько вещей, которые необходимо прояснить, так как я столкнулся с проблемами при настройке разрешений, и мне потребовалось несколько минут, чтобы разобраться с этой проблемой!

Следуя ответу iBug, вы удалите все разрешения, но как установить разрешение Full Control для себя? Вот где я застрял сначала, так как не знал, как это сделать.

После отключения наследования вы сможете удалить всех разрешенных пользователей или группы.

После этого

Нажмите на Add, затем нажмите на Set a Principal и введите System и Administrators в поле внизу, затем нажмите на your email addredd.

Загрузит имя, если пользователь существует. Затем нажмите на check names > Введите OK > Basic Permisisons Allow > Full Control

Это установит разрешение Full Control для SYSTEM, Administrators и Your User.

После этого попробуйте ssh с помощью этого ключа. Теперь все должно быть решено.

У меня была такая же проблема, и я решил ее с помощью этого метода. Если есть пользователь или группа с таким именем, то он загрузит его.

Похожие вопросы

3
28
19
12
10