视窗 CHMOD 600
Posted
技术标签:
【中文标题】视窗 CHMOD 600【英文标题】:Windows CHMOD 600 【发布时间】:2011-07-12 23:37:22 【问题描述】:我正在尝试在 Windows 中使用 OpenSSH 连接到 Amazon EC2,但我需要设置我的密钥文件的权限。
CHMOD 600
的 windows 等效项是什么?
我在 Google 上进行了广泛搜索,只发现了垃圾博客。
编辑:Windows 7,使用 DOS。
【问题讨论】:
我相信它对特定用户是只读的。我认为用户是否可以写入文件并不重要。 我的计算显示所有者为 rw,其他一切都关闭。 这是 windows,你必须使用 gui 。文件属性、安全性,将其更改为仅限所有者访问。 @david 它说“程序无法启动,因为计算机中缺少 cygintl-2.dll ......”当我输入chmod
@Austin 另外,什么是 DOS? Windows 7 没有 DOS。
【参考方案1】:
右键单击文件/目录,选择属性,然后选择安全。单击高级,然后单击编辑。取消选中“可继承”并在对话框中选择“删除”。删除任何剩余的显式权限,为您的用户名添加“完全访问”权限。
【讨论】:
它仍然显示Permissions 0644 for key.pem are too open
那么 openssh 表现不佳 - 也许改用 cygwin?
另外,可能将权限授予“创作者所有者”而不是您的用户名。
这对问题没有任何帮助。 0644权限错误依旧出现。
再一步:为特殊用户Everyone添加一个条目并将该用户的权限编辑为拒绝所有权限【参考方案2】:
没有真正回答同样的问题,但我能够使用这些说明连接到 EC2:
SSH to EC2 linux instance from Windows
【讨论】:
【参考方案3】:我也遇到了同样的问题。有效的解决方案是将 ssh.exe 的兼容模式设置为 Windows XP SP3。
【讨论】:
不幸的是,每次运行 ssh 并在新的命令 shell 中打开它时都会弹出 UAC(至少在 Windows 8 上)。【参考方案4】:我也遇到了同样的问题。有效的解决方案是将 ssh.exe 的兼容模式设置为 Windows XP SP3。
->此答案适用于 Windows 7
【讨论】:
【参考方案5】:我意识到这有点老了,但我刚刚在 Windows 7 中为自己找到了解决方案。看起来这个问题没有得到解决。正如您在 cmets 中指出的那样,我遇到了所有相同的错误,包括 chmod
上的 Cygwin missing cygintl-2.dll
。
经过广泛的研究,我没有找到任何答案:
C:\Users\mztriz\.ssh>ssh -v
OpenSSH_3.8.1p1,OpenSSL 0.9.7d 2004 年 3 月 17 日 用法:ssh [-1246AaCfghkNnqsTtVvXxY] [-b bind_address] [-c cipher_spec] [-D 端口] [-e escape_char] [-F 配置文件] [-i identity_file] [-L 端口:主机:主机端口] [-l 登录名] [-m mac_spec] [-o 选项] [-p 端口] [-R 端口:主机:主机端口] [用户@]主机名 [命令]
如您所见,我运行的 OpenSSH 版本已经过时了。但是,我不知道这一点,因为在谷歌上快速搜索 OpenSSH for Windows
会返回这个旧版本。
查看版本控制后,我在该网站的下载部分找到了OpenSSH for Windows 6.9p1-1。
这个较新版本的 OpenSSH 似乎解决了您提到的所有问题。
【讨论】:
(+1) 卸载 0.9.7d 版本的 OpenSSH 并按照本文中的说明安装新的 OpenSSH。chmod
就像一个魅力。
感谢您指出这一点。网上还没听说过mls-software.com/opensshd.html。
我在使用 AWS 时遇到问题,要求我输入不适用的密码。这是唯一的解决方案。【参考方案6】:
通过 scp 将文件复制到 Unix 系统并将 chmod 600 设置为文件。 然后将文件传输回 Windows 机器。 它对我有用。
【讨论】:
这并不能解决 0644 权限问题。【参考方案7】:修改权限,以便:
密钥文件不继承自容器 您(所有者)拥有完全访问权限 删除任何其他用户(例如,SYSTEM、管理员)的权限条目 为特殊用户 Everyone 添加一个条目,并将该用户的权限编辑为拒绝所有权限: 在 Windows 资源管理器中右键单击文件,然后选择属性 > 安全 > 高级,打开高级安全设置对话框。 单击“权限”选项卡,然后单击“更改权限”。 单击添加,在对象名称字段中输入所有人,单击检查名称,然后单击确定。 在“权限条目”对话框中,单击“拒绝”列中的复选框以获得完全控制。 在每个对话框上单击“确定”以退出并关闭文件的属性对话框。现在 scp 将读取权限 0400 并且会很高兴。伊什。
【讨论】:
拒绝会否决单独的用户权限 - 因此,如果您的所有者在所有人组中,这将拒绝对该文件的所有权限,不会导致 400,而是 000【参考方案8】:我更喜欢 Cygwin 而不是 putty 并且您可以在 cygwin 中运行 chmod 命令将 PEM 密钥的权限更改为 400,然后您就可以开始了。
myuser@myuser-HP ~
$ ssh -i /cygdrive/c/Users/myuser/Downloads/mykey.pem ec2-user@xx.xx.xx.xx
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0550 for '/cygdrive/c/Users/myuser/Downloads/mykey.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 "/cygdrive/c/Users/myuser/Downloads/mykey.pem": bad permissions
Permission denied (publickey).
myuser@myuser-HP ~
$ chmod
chmod: missing operand
Try 'chmod --help' for more information.
myuser@myuser-HP ~
$ chmod 400 /cygdrive/c/Users/myuser/Downloads/mykey.pem
myuser@myuser-HP ~
$ ssh -i /cygdrive/c/Users/myuser/Downloads/meykey.pem ec2-user@xx.xx.xx.xx
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2015.09-release-notes/
[ec2-user@ip-xxx ~]$ ohyeah I am in!
【讨论】:
【参考方案9】:适用于 unix 和 OSX
很简单:
chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
对于 Windows
如果文件是 Windows (NTFS) 符号链接,上述方法将不起作用。您需要将其设为常规文件。我不知道为什么。
如果您没有 openssh 或 cygwin,请使用 Chocolatey 使用 chocolatey 轻松安装。
choco install cyg-get
打开用 Chocolatey 安装的 Cygwin 终端并运行(注意 ssh-keygen
创建新密钥):
cyg-get install openssh
ssh-keygen
cd ~/.ssh && explorer.exe .
验证密钥是否存在(或用您想要的密钥替换它们),然后在 Cygwin shell 中:
chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
或者对于您正在使用(并从中生成密钥)chocolatey 的 SSH 包的极少数情况:
chown -R $USER:users /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
【讨论】:
【参考方案10】:今天在 Windows 上推荐的方法之一是使用 PowerShell 以及 Get-Acl
和 Set-Acl
Cmdlet。
这是一个确保只有当前用户有权访问文件夹及其中所有文件的示例 - 类似于 Unix/Linux/OS X 中 .ssh
文件夹的建议:
# get current ACL of directory
$Acl = Get-Acl -Path $Directory
# remove inheritance ($true) and remove all existing rules ($false)
$Acl.SetAccessRuleProtection($true,$false)
# create new access rule for
# current user
# with FullControl permission
# enable inheritance for folders and files
# enable it for the specified folder as well
# allow these conditions
$AcessRule = [System.Security.AccessControl.FileSystemAccessRule]::new(
$env:USERNAME,
"FullControl",
([System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit),
[System.Security.AccessControl.PropagationFlags]::None,
[System.Security.AccessControl.AccessControlType]::Allow)
# add access rule to empty ACL
$Acl.AddAccessRule($AcessRule)
# activate ACL on folder
Set-Acl -Path $Directory -AclObject $Acl
更多详情见
FileSystemAccessRule-Class Set-Acl documentation【讨论】:
@Inoperable 你是对的,看来我复制了一个旧的、不完整的版本。我修复并测试了代码,它现在可以正常运行了。【参考方案11】:我在 Windows 10 上遇到了同样的问题。我通过执行以下步骤修复了它。
1:- 右键单击目标文件并选择properties
然后选择Security
Tab
2:- 单击Advanced
,然后确保禁用继承。
3:- 点击apply
,然后点击安全菜单中的Edit
4:- Remove
除管理员用户外的所有用户,应具有完全控制权
*管理员帐户应选中Allow
列上的所有复选框,除了
特别许可。
5:- 点击Apply
,然后点击确定。
你可以走了。
这适用于 Amazon EC2 .pem
文件,并且与 Linux 上的 Chmod 600 几乎相同。
【讨论】:
你就是那个!谢谢!删除除我之外的所有用户修复它,ty。【参考方案12】:chmod 在 Windows 中不起作用。尝试以下方法限制访问
右键单击文件>属性>安全>高级>禁用继承>'将继承的权限转换为对此对象的显式权限' 点击“允许|所有人|完全控制”>编辑>“选择一个主体”>输入您的用户名>“检查名称”>选择您的用户名>确定>确定>确定(确定所有窗口都关闭)李>【讨论】:
以上是关于视窗 CHMOD 600的主要内容,如果未能解决你的问题,请参考以下文章