2018-02-18 05:10:44 +0000 2018-02-18 05:10:44 +0000
122
122
Advertisement

Windows SSH:"私钥 "的权限太开放。

Advertisement

我在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 ubuntu@192.168.0.1 -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
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>
C:\>
C:\>ssh ubuntu@192.168.0.1 -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>
Advertisement
Advertisement

答案 (14)

150
150
150
2018-02-18 08:57:27 +0000

你在Windows资源管理器中找到该文件,右键点击它,然后选择 “属性"。导航到 "安全 "选项卡,点击 "高级"。

将所有者改为你,禁止继承并删除所有权限。然后授予自己 "完全控制 "并保存权限。现在SSH不会再抱怨文件权限太大打开不了了。

最后应该是这样的。

29
29
29
2018-06-08 15:34:57 +0000

钥匙必须只允许用户访问,不能让其他账户、服务或组访问。

  • GUI:
  • [文件]属性-安全-高级 1.将所有者设置为钥匙的用户
  • 删除Permission Entries下的所有用户、组和服务,_除了密钥的用户之外
  • 将钥匙的用户设置为完全控制

  • CLI:*。

15
Advertisement
15
15
2018-09-08 13:27:16 +0000
Advertisement

除了ibug提供的答案外。由于我在windows里面使用ubuntu系统来运行ssh命令。还是不行。所以我做了

sudo ssh ...

,然后就成功了。

5
5
5
2018-04-05 11:53:43 +0000

我也有同样的问题,这似乎与你运行的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
banana@127.0.0.127: Permission denied (publickey).

ps.文件的权限只是我自己的完全访问权,其他的都没有。

5
Advertisement
5
5
2019-10-04 13:28:46 +0000
Advertisement

使用下面的命令在你的钥匙上,它适用于Windows

icacls .\private.key /inheritance:r
icacls .\private.key /grant:r "%username%":"(R)"
```。
4
4
4
2019-09-06 18:17:27 +0000

我也有类似的问题,但我当时在工作,没有能力改变我工作电脑上的文件权限。你需要做的是安装 WSL 然后把你的密钥复制到WSL的隐藏ssh目录:

cp <path to your key> ~/.ssh/<name of your key>

现在你应该可以正常修改权限了。

sudo chmod 600 ~/.ssh/<your key's name>

然后使用WSL进行ssh:

ssh -i ~/.ssh/<name of your key> <username>@<ip address>
```。
3
Advertisement
3
3
2019-02-16 21:58:34 +0000
2
2
2
2019-08-12 12:39:01 +0000

你可以在windows中使用icacls代替chmod来调整文件权限。给予当前用户读取权限,并删除其他所有权限,

icacls <file name> /inheritance:r
icacls <file name> /grant:r "%username%":"(R)"
```。
1
Advertisement
1
1
2019-10-03 21:07:46 +0000
Advertisement

这只是@JW0914的CLI回答的脚本版本,所以首先要给他上票。另外,这是我的第一个PowerShell脚本,所以欢迎提出建议。

# DO the following in powerhsell if not already done:
# Set-ExecutionPolicy RemoteSigned

# NOTE: edit the path in this command if needed
$sshFiles=Get-ChildItem -Path C:\DevContainerHome\.ssh -Force

$sshFiles | % {
  $key = $_
  & icacls $key /c /t /inheritance:d
  & icacls $key /c /t /grant %username%:F
  & icacls $key /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
}

# Verify:
$sshFiles | % {
  icacls $_
}
1
1
1
2019-11-28 14:45:28 +0000

在CMD中的一行可能就能做到(如这里所描述的: https://serverfault.com/a/883338/550334 ),即从stdin中添加key而不是改变permissons。

cat /path/to/permission_file | ssh-add -k

检查是否添加了密钥:

ssh-add -l
``` 。
0
0
0
2019-10-29 04:30:11 +0000

使用 Mingw-w64.

信息: http://mingw-w64.org/doku.php

用 Git 下载 Windows 版,或者直接下载。

这里提供: https://github.com/mirror/mingw-w64 git clone https://github.com/mirror/mingw-w64

它还有其他有用的Linux命令,比如targzip

0
0
0
2019-11-26 06:10:29 +0000

我是Window的用户,用Windows的bash,按照所有的步骤用Windows GUI设置权限,结果还是不行,还抱怨。

Permissions 0555 for 'my_ssh.pem' are too open.
It is required that your private key files are NOT accessible by others.

我在ssh命令的前面加了sudo 就可以了。希望对其他人有所帮助。

0
0
0
2020-02-24 23:03:22 +0000

由于权限问题,我的这些答案都不能为我所用,所以我把我的解决方案分享给大家。

1.进入C:\Users\UserName.ssh

  1. 复制并粘贴id_rsa文件

  2. 重命名为其他文件,例如:example

  3. 打开重命名的文件example,用自己的私钥

替换密钥 5. cd到该目录

  1. ssh -i example example@127.0.0.1然后输入密码。
-1
-1
-1
2019-02-08 14:20:33 +0000

由iBug提供的答案工作正常! 你可以按照这个方法来解决这个问题。

但是有一些东西需要清除,因为我在设置权限时遇到了问题,我花了几分钟才弄清楚问题的所在!

按照iBug的回答,你会删除所有的权限,但是如何设置自己的Full Control权限呢,这就是我一开始被卡住的地方,因为我不知道怎么做。

禁用继承后,你就可以删除所有允许的用户或组了。

完成后,

点击Add然后点击Set a Principal,然后在底部的字段中输入SystemAdministratorsyour email addredd然后点击check names

如果用户存在,它会加载名称。然后,点击OK 〉输入Allow 〉基本权限Full ControlOkay

这将会设置系统、管理员和你的用户的完全控制权限。

然后尝试使用该密钥进行ssh。现在应该可以解决了。

我有同样的问题,我用这个方法解决了。如果有任何用户或组有这个名字,那么它就会加载这个名字。

-截图- 权限条目 选择一个负责人/选择用户或组

Advertisement

相关问题

3
28
19
12
5
Advertisement
Advertisement