Как защитить закрытый ключ SSH в Windows 10

Как защитить закрытый ключ SSH в Windows 10

Я использую новый 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

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

  • Графический интерфейс:
    [Файл]ХарактеристикиБезопасностьПередовой
    1. Владелец:Изменить →Выберите директора→ Введите пользователя ключа → ОК
    2. Разрешения на запись:Удалить все, кроме пользователя ключа
    3. Установить пользователя ключа наПолный контрольесли еще не установлено
      1. Выберите пользователя → Изменить → Полный доступ → ОК
        ИЛИ
      2. Добавить →Выберите директора→ Введите пользователя ключа → ОК
    4. ОК → ОК

  • 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, вот некоторые дополнительные сведения:

  1. щелкните правой кнопкой мыши по файлу PEM, выберите Свойства, Безопасность.
  2. установите владельца на пользователя ключа (т.е. вас)
  3. записи разрешений, удалить всех пользователей, группы, службы, за исключением пользователя ключа
  4. установить пользователю ключа "полный контроль". Вот как я это сделал:
  5. отключить наследование. если вы видите всплывающее окно, выберите преобразование в явные разрешения для этого файла.
  6. Добавить, выбрать субъекта, тип объекта — Пользователь, имя объекта — имя пользователя владельца ключа (например, если ваш домашний каталог — папка c:\Users\ben, то введите здесь ben). ОК.
  7. Предоставьте этому пользователю полный доступ
  8. удалить всех остальных (аутентифицированных пользователей, систему и т. д.)
  9. ХОРОШО

Перед отключением наследования важно указать в качестве владельца пользователя ключа.

решение3

Чтобы сэкономить время, это гораздо проще, чем другие решения: просто переместите файл в «безопасное место» на диске, например в %userprofile%/.sshпапку.

ПРИМЕЧАНИЕ: Некоторые говорят, что это работает где угодно на диске C: или в папке загрузок пользователя, но я это не проверял.

Связанный контент