Я использую новый SSH-клиент для Windows 10 и при попытке подключения с закрытым ключом получаю эту ошибку:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'MyPair.pem' are too open. It is required that your
private key files are NOT accessible by others. This private key will
be ignored. Load key "MyPair.pem": bad permissions [email protected]:
Permission denied (publickey).
Я знаю, что если бы я работал в Linux, мне пришлось бы запустить его, chmod 600
чтобы установить права доступа к файлам, но что вы используете в Windows 10?
решение1
Ключи должны быть доступны только тому пользователю, для которого они предназначены, и никаким другим учетным записям, службам или группам.
- Графический интерфейс:
[Файл]Характеристики→Безопасность→Передовой- Владелец:Изменить →Выберите директора→ Введите пользователя ключа → ОК
- Разрешения на запись:Удалить все, кроме пользователя ключа
- Установить пользователя ключа наПолный контрольесли еще не установлено
- Выберите пользователя → Изменить → Полный доступ → ОК
ИЛИ - Добавить →Выберите директора→ Введите пользователя ключа → ОК
- Выберите пользователя → Изменить → Полный доступ → ОК
- ОК → ОК
Cmd
:::# Set Key File Variable: Set Key="%UserProfile%\.ssh\id_rsa" ::# Remove Inheritance: Icacls %Key% /c /t /Inheritance:d ::# Set Ownership to Owner: Icacls %Key% /c /t /Grant %UserName%:F ::# Remove All Users, except for Owner: Icacls %Key% /c /t /Remove Administrator BUILTIN\Administrators BUILTIN Everyone System Users ::# Verify: Icacls %Key% ::# Remove Variable: set "Key="
PowerShell
:# Set Key File Variable: New-Variable -Name Key -Value "$env:UserProfile\.ssh\id_rsa" # Remove Inheritance: Icacls $Key /c /t /Inheritance:d # Set Ownership to Owner: Icacls $Key /c /t /Grant $env:UserName:F # Remove All Users, except for Owner: Icacls $Key /c /t /Remove Administrator BUILTIN\Administrators BUILTIN Everyone System Users # Verify: Icacls $Key # Remove Variable: Remove-Variable -Name Key
- WSL/Cygwin:
# Set Variables: # Key File: key="/path/to/key" # User: user="$(echo $USER)" # Set Ownership to Owner: (assumes user's name is also user's group name) chown $user:$user $key # Set Access Rights chmod 0600 $key # Verify ls -l $key
решение2
Используя графический интерфейс Windows 10, вот некоторые дополнительные сведения:
- щелкните правой кнопкой мыши по файлу PEM, выберите Свойства, Безопасность.
- установите владельца на пользователя ключа (т.е. вас)
- записи разрешений, удалить всех пользователей, группы, службы, за исключением пользователя ключа
- установить пользователю ключа "полный контроль". Вот как я это сделал:
- отключить наследование. если вы видите всплывающее окно, выберите преобразование в явные разрешения для этого файла.
- Добавить, выбрать субъекта, тип объекта — Пользователь, имя объекта — имя пользователя владельца ключа (например, если ваш домашний каталог — папка c:\Users\ben, то введите здесь ben). ОК.
- Предоставьте этому пользователю полный доступ
- удалить всех остальных (аутентифицированных пользователей, систему и т. д.)
- ХОРОШО
Перед отключением наследования важно указать в качестве владельца пользователя ключа.
решение3
Чтобы сэкономить время, это гораздо проще, чем другие решения: просто переместите файл в «безопасное место» на диске, например в %userprofile%/.ssh
папку.
ПРИМЕЧАНИЕ: Некоторые говорят, что это работает где угодно на диске C: или в папке загрузок пользователя, но я это не проверял.