简单的 SSH 连接 AWS 让我抓狂不已

简单的 SSH 连接 AWS 让我抓狂不已

我在 AWS 上创建了一个简单的免费层 EC2 实例。

我正在尝试通过 Windows 10 计算机上的 SSH 连接到它。

我在创建实例之前下载了密钥,并将其存储在文件夹 E:\folder 中

我在Win10上安装了SSH客户端和服务器功能。

问题:我无法解决我的密钥的权限问题。

我已经在 Google 上搜索并检查了大约 100 个链接,以找到设置密钥文件权限的正确方法,但无论我怎么尝试,我总是得到“权限错误”或“格式无效”的提示,并伴随“权限被拒绝(公钥)”。

权限有问题。我甚至在 cygwin 上尝试了 CHMOD,但问题仍未解决。

我确信我忽略了最简单的事情,但我已经绞尽脑汁很长时间了,非常感谢任何帮助。

非常感谢你,

答案1

密钥只能由用户访问,其他帐户、服务或组均不能访问。


OpenSSH 应该从Win32的OpenSSHGitHub,不是通过 Windows'添加功能

  1. 删除通过 Windows 安装的 SSH 客户端和服务器包添加功能
  2. 安装 Win32-OpenSSH
    1. 配置用户特定的ssh_config:(%UserProfile%/.ssh/config手册页
      必须在步骤 3 之前完成否则需要再次完成第 3 步

    2. 配置系统范围sshd_config:(%ProgramData%\ssh\sshd_config
      手册页),即使你不打算使用 SSH 服务器部分,因为链接到的配置比默认配置更安全
      必须在步骤 3 之前完成否则需要再次完成第 3 步

    3. 配置系统范围ssh_config:(%ProgramData%\ssh\ssh_config手册页
      必须在步骤 3 之前完成否则需要再次完成第 3 步

  3. 执行以下脚本来修复权限(作为管理员):
    powershell -ExecutionPolicy Bypass -File "$Env:Programfiles\OpenSSH\FixHostFilePermissions.ps1"
    powershell -ExecutionPolicy Bypass -File "$Env:Programfiles\OpenSSH\FixUserFilePermissions.ps1"
    
  4. 在 OpenSSH 期望的位置创建 PID 文件(作为管理员):
    mkdir "$Env:Programfiles\OpenSSH\appfiles"
    echo > "$Env:Programfiles\OpenSSH\appfiles\sshd.pid"
    
  5. 确保用户的 SSH 目录(%UserProfile%\.ssh|| ~/.ssh)具有正确的权限:


    Windows/Powershell 终端


    • 图形用户界面(GUI):
      • [文件] 属性 - 安全 - 高级
        1. 所有者对于密钥的用户
        2. 删除所有用户、组和服务,除了钥匙的用户, 在下面权限条目
        3. 将密钥的用户设置为完全控制

    • 命令行:

      # Set Variable:
        $key="C:\Path\to\key"
        $ssh="$env:userprofile\.ssh"
      
      # Remove Inheritance:
        Icacls $ssh /c /t /Inheritance:d
        Icacls $key /c /t /Inheritance:d
      
      # Set Ownership to Owner:
        Icacls $ssh /c /t /Grant $(echo $env:UserName):F
        Icacls $key /c /t /Grant $(echo $env:UserName):F
      
      # Remove All Users, except for Owner:
        Icacls $ssh /c /t /Remove Administrator BUILTIN\Administrators BUILTIN Everyone System Users
        Icacls $key /c /t /Remove Administrator BUILTIN\Administrators BUILTIN Everyone System Users
      
      # Verify:
        Icacls $ssh
        Icacls $key
      



    WSL/Cygwin 终端


    • 命令行界面

      # Set Variables
      
        # Key
          key="/path/to/key"
      
        # User:
          user="$(echo $USER)"
      
      # Set Ownership
        # Assumes user's name is also user's group name
          chown $user:$user $key
      
      # Set Access Rights
        chmod 0600 $key
      
      # Verify
        ls -l $key
      

答案2

去年(可能现在也是如此)的 Windows 10 ssh 客户端仅支持 EdDSA ssh 密钥,AWS 提供并仅支持 RSA。

尝试安装 putty 并使用密钥对测试 ssh。如果可行,并且您更愿意使用 Windows 10 ssh 客户端,请使用 Windows 10 客户端生成密钥对并替换 EC2 实例上的公钥。

如果失败,请验证您拥有的密钥的第一行或最后一行没有缺少任何破折号。

它应该类似于:

-----BEGIN RSA PRIVATE KEY-----
(key contents)
-----END RSA PRIVATE KEY-----

两端各有 5 条破折号。

相关内容