我在 AWS 上创建了一个简单的免费层 EC2 实例。
我正在尝试通过 Windows 10 计算机上的 SSH 连接到它。
我在创建实例之前下载了密钥,并将其存储在文件夹 E:\folder 中
我在Win10上安装了SSH客户端和服务器功能。
问题:我无法解决我的密钥的权限问题。
我已经在 Google 上搜索并检查了大约 100 个链接,以找到设置密钥文件权限的正确方法,但无论我怎么尝试,我总是得到“权限错误”或“格式无效”的提示,并伴随“权限被拒绝(公钥)”。
权限有问题。我甚至在 cygwin 上尝试了 CHMOD,但问题仍未解决。
我确信我忽略了最简单的事情,但我已经绞尽脑汁很长时间了,非常感谢任何帮助。
非常感谢你,
答案1
密钥只能由用户访问,其他帐户、服务或组均不能访问。
OpenSSH 应该从Win32的OpenSSHGitHub,不是通过 Windows'添加功能
- 删除通过 Windows 安装的 SSH 客户端和服务器包添加功能。
- 安装 Win32-OpenSSH:
- 配置用户特定的
ssh_config
:(%UserProfile%/.ssh/config
手册页)
必须在步骤 3 之前完成否则需要再次完成第 3 步 - 配置系统范围
sshd_config
:(%ProgramData%\ssh\sshd_config
手册页),即使你不打算使用 SSH 服务器部分,因为链接到的配置比默认配置更安全
必须在步骤 3 之前完成否则需要再次完成第 3 步 - 配置系统范围
ssh_config
:(%ProgramData%\ssh\ssh_config
手册页)
必须在步骤 3 之前完成否则需要再次完成第 3 步
- 配置用户特定的
- 执行以下脚本来修复权限(作为管理员):
powershell -ExecutionPolicy Bypass -File "$Env:Programfiles\OpenSSH\FixHostFilePermissions.ps1" powershell -ExecutionPolicy Bypass -File "$Env:Programfiles\OpenSSH\FixUserFilePermissions.ps1"
- 在 OpenSSH 期望的位置创建 PID 文件(作为管理员):
mkdir "$Env:Programfiles\OpenSSH\appfiles" echo > "$Env:Programfiles\OpenSSH\appfiles\sshd.pid"
确保用户的 SSH 目录(
%UserProfile%\.ssh
||~/.ssh
)具有正确的权限:
Windows/Powershell 终端
- 图形用户界面(GUI):
- [文件] 属性 - 安全 - 高级
- 放所有者对于密钥的用户
- 删除所有用户、组和服务,除了钥匙的用户, 在下面权限条目
- 将密钥的用户设置为完全控制
- [文件] 属性 - 安全 - 高级
命令行:
# 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
- 图形用户界面(GUI):
答案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 条破折号。