为了测试目的,我在 Windows 7 中安装了 OpenSSH 7.6。在我尝试从此 Windows 访问我的一个 AWS EC2 盒之前,SSH 客户端和服务器工作正常。
看来我需要更改私钥文件的权限。这可以在 unix/linux 上使用chmod
命令轻松完成。
那么窗户怎么样?
private-key.ppm 是直接从 AWS 复制的,我猜测权限也是如此。
C:\>ssh -V
OpenSSH_7.6p1, LibreSSL 2.5.3
C:\>ver
Microsoft Windows [Version 6.1.7601]
C:\>
C:\>ssh [email protected] -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
[email protected]: Permission denied (publickey).
C:\>
C:\>
C:\>ssh [email protected] -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
[email protected]: Permission denied (publickey).
C:\>
答案1
答案2
密钥只能由其指定的用户访问,其他帐户、服务或组均不能访问。
- 图形用户界面(GUI):
[文件]特性→安全→先进的- 所有者:更改 →选择校长→ 输入密钥的用户 → 确定
- 权限条目:删除除密钥用户之外的所有内容
- 将密钥的用户设置为完全控制如果尚未设置
- 选择用户 → 修改 → 完全控制 → 确定
或者 - 添加 →选择校长→ 输入密钥的用户 → 确定
- 选择用户 → 修改 → 完全控制 → 确定
- 确定 → 确定
Cmd
:::# Set Key File Variable: Set Key="%UserProfile%\.ssh\id_rsa" ::# Remove Inheritance: Icacls %Key% /c /t /Inheritance:d ::# Set Ownership to Owner: :: # Key's within %UserProfile%: Icacls %Key% /c /t /Grant %UserName%:F :: # Key's outside of %UserProfile%: TakeOwn /F %Key% Icacls %Key% /c /t /Grant:r %UserName%:F ::# Remove All Users, except for Owner: Icacls %Key% /c /t /Remove:g "Authenticated Users" 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: # Key's within $env:UserProfile: Icacls $Key /c /t /Grant ${env:UserName}:F # Key's outside of $env:UserProfile: TakeOwn /F $Key Icacls $Key /c /t /Grant:r ${env:UserName}:F # Remove All Users, except for Owner: Icacls $Key /c /t /Remove:g Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users # Verify: Icacls $Key # Remove Variable: Remove-Variable -Name Key
答案3
除了 ibug 提供的答案之外。由于我使用 Windows 中的 ubuntu 系统来运行 ssh 命令。它仍然不起作用。所以我做了
sudo ssh ...
然后它就起作用了