我正在尝试使用Windows中的OpenSSH连接到Amazon EC2,但我需要设置密钥文件的权限。
相当于CHMOD 600
的窗口是什么?
我已广泛搜索,只发现了blogspam。
编辑:Windows 7,使用DOS。
答案 0 :(得分:27)
我意识到这有点老了,但我刚刚在Windows 7中找到了自己的解决方案。看起来这个问题没有得到解决。正如您在评论中所指出的那样,我在Cygwin missing cygintl-2.dll
上遇到了所有相同的错误,包括chmod
。
经过广泛的研究,没有找到任何答案我跑了:
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 port] [-e escape_char] [-F configfile] [-i identity_file] [-L port:host:hostport] [-l login_name] [-m mac_spec] [-o option] [-p port] [-R port:host:hostport] [user @] hostname [command]
正如您所看到的,我运行的OpenSSH版本已经过时了。但是,我不知道这一点,因为快速谷歌搜索OpenSSH for Windows
会返回此旧版本。
在查看版本控制后,我在该网站的下载部分找到了OpenSSH for Windows 6.9p1-1。
这个较新版本的OpenSSH似乎解决了你提到的所有问题。
答案 1 :(得分:8)
修改权限,以便:
现在scp会读取权限0400并且会很高兴。杂交。
答案 2 :(得分:6)
右键单击文件/目录,选择“属性”,然后选择“安全性”。单击高级,然后单击编辑。取消选中“可继承”,然后在对话框中选择“删除”。删除所有明确的权限,为您的用户名添加“完全访问权限”。
答案 3 :(得分:6)
我也是同样的问题。解决方案,其工作原理是将ssh.exe的兼容模式设置为Windows XP SP3。
答案 4 :(得分:3)
我更喜欢 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!
答案 5 :(得分:3)
很简单:
chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
如果文件是Windows(NTFS)符号链接,则上述功能无法正常工作。您需要将其设为常规文件。我不知道为什么。
如果您没有openssh或cygwin,请使用chocolatey使用chocolatey轻松安装。
choco install cyg-get
使用chocolatey和run安装的 打开Cygwin终端(注意ssh-keygen
创建新密钥):
cyg-get install openssh
ssh-keygen
cd ~/.ssh && explorer.exe .
验证密钥在那里(或用你想要的密钥替换它们),然后在Cygwin shell中:
chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
或者您使用巧克力的SSH 包时使用(并生成密钥)的罕见情况:
chown -R $USER:users /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
答案 6 :(得分:3)
答案 7 :(得分:1)
我也是同样的问题。解决方案,其工作原理是将ssh.exe的兼容模式设置为Windows XP SP3。
- >这个答案适用于Windows 7
答案 8 :(得分:1)
今天,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 $SgwConfigDirectory -AclRule
有关详细信息,请参阅
答案 9 :(得分:1)
chmod将无法在Windows中运行。尝试以下方法限制访问权限
答案 10 :(得分:-1)
并没有真正回答相同的问题,但我能够使用这些说明连接到EC2:
答案 11 :(得分:-1)
通过scp将文件复制到Unix系统,并将chmod 600复制到文件。 然后将文件传输回Windows计算机。 它对我有用。