我正在使用适用于 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):
[文件]特性→安全→先进的- 所有者:更改 →选择校长→ 输入密钥的用户 → 确定
- 权限条目:删除除密钥用户之外的所有内容
- 将密钥的用户设置为完全控制如果尚未设置
- 选择用户 → 修改 → 完全控制 → 确定
或者 - 添加 →选择校长→ 输入密钥的用户 → 确定
- 选择用户 → 修改 → 完全控制 → 确定
- 确定 → 确定
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,这里有一些额外的详细信息:
- 右键单击 pem 文件,属性,安全。
- 将所有者设置为密钥的用户(即您)
- 权限条目,删除除密钥用户之外的所有用户、组、服务
- 将密钥的用户设置为“完全控制”。以下是我操作的方法:
- 禁用继承. 如果您看到弹出窗口,请选择转换为此文件的明确权限。
- 添加,选择一个主体,对象类型为用户,对象名称为密钥所有者的用户名(例如,如果您的主目录是 c:\Users\ben 文件夹,则在此处键入 ben)。确定。
- 授予该用户完全控制权
- 删除其他所有人(经过身份验证的用户、系统等)
- 好的
在禁用继承之前,将所有者设置为密钥的用户非常重要。
答案3
为了节省时间,这比其他解决方案容易得多:只需将文件移动到驱动器上的“安全位置”,例如%userprofile%/.ssh
文件夹。
注意:有些人说它可以在 C: 驱动器或用户的下载文件夹中的任何地方运行,但我没有测试过。