我在Windows 7中安装了OpenSSH 7.6用于测试目的。SSH客户端& 服务器工作正常,直到我试图从这个窗口访问我的一个AWS EC2盒子。
看起来我需要改变私钥文件的权限。这在unix/linux上可以用chmod
命令轻松完成。
那么windows呢?
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:\>
你在Windows Explorer中找到该文件,右击它,然后选择 "属性"。导航到"安全"选项卡并点击"高级"。
将所有者改为你,禁止继承并删除所有权限。然后授予自己"完全控制"并保存权限。现在,SSH不会再抱怨文件权限过于开放。
它最终应该是这样的。
钥匙必须只能被用户访问,而不能被其他账户、服务或组访问。
`
CLI:
::设置变量 ::
set key="C:\Path\to key"
::删除继承性 ::
cmd /c icacls %key% /c /t /inheritance:d
::将所有权设置为所有者 ::
cmd /c icacls %key% /c /t /grant %username%:F
::删除所有用户,除了所有者 ::
cmd /c icacls %key% /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
::验证 ::
cmd /c icacls %key% /c /t /remove Administrator "Authenticated Users"BUILTIN
我也有同样的问题,这似乎与你运行的SSH版本有关。
如果我输入
where ssh
我得到...
C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\Git\usr\bin\ssh.exe
当我在这两个地方运行ssh -V
时,我得到了
OpenSSH_7.5p1, without OpenSSL
OpenSSH_7.3p1, OpenSSL 1.0.2k 26 Jan 2017
...分别是
所以,当我从git/bin目录下运行ssh
时,它工作正常,没有抱怨权限问题,但使用以前安装的SSH运行相同的命令行时,它的结果是这样的。
Load key "t:\\mykeys\\rich-private.ppk": invalid format
[email protected]: Permission denied (publickey).
ps.文件的权限只是我自己的完全访问权限,没有其他的。