【问题标题】:Windows CHMOD 600视窗 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。

标签: windows permissions ssh ssh-keys


【解决方案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-AclSet-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
          

          更多详情见

          【讨论】:

          • @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 中不起作用。尝试以下方法限制访问

          • 右键单击文件>属性>安全>高级>禁用继承>'将继承的权限转换为对此对象的显式权限'
          • 点击“允许|所有人|完全控制”>编辑>“选择一个主体”>输入您的用户名>“检查名称”>选择您的用户名>确定>确定>确定(确定所有窗口都关闭)李>

          【讨论】:

            猜你喜欢
            • 2012-11-24
            • 2017-11-05
            • 1970-01-01
            • 2015-07-25
            • 2018-07-27
            • 1970-01-01
            • 1970-01-01
            • 2012-01-10
            • 1970-01-01
            相关资源
            最近更新 更多