如何在 Windows 10 上保护 SSH 私钥

如何在 Windows 10 上保护 SSH 私钥

我正在使用适用于 Windows 10 的新 ssh 客户端,当尝试使用私钥连接时出现此错误:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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

密钥只能由其指定的用户访问,其他帐户、服务或组均不能访问。

  • 图形用户界面(GUI):
    [文件]特性安全先进的
    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 GUI,这里有一些额外的详细信息:

  1. 右键单击 pem 文件,属性,安全。
  2. 将所有者设置为密钥的用户(即您)
  3. 权限条目,删除除密钥用户之外的所有用户、组、服务
  4. 将密钥的用户设置为“完全控制”。以下是我操作的方法:
  5. 禁用继承. 如果您看到弹出窗口,请选择转换为此文件的明确权限。
  6. 添加,选择一个主体,对象类型为用户,对象名称为密钥所有者的用户名(例如,如果您的主目录是 c:\Users\ben 文件夹,则在此处键入 ben)。确定。
  7. 授予该用户完全控制权
  8. 删除其他所有人(经过身份验证的用户、系统等)
  9. 好的

在禁用继承之前,将所有者设置为密钥的用户非常重要。

答案3

为了节省时间,这比其他解决方案容易得多:只需将文件移动到驱动器上的“安全位置”,例如%userprofile%/.ssh文件夹。

注意:有些人说它可以在 C: 驱动器或用户的下载文件夹中的任何地方运行,但我没有测试过。

相关内容