我一直在 AWS 中使用 Amazon EC2 实例。我已成功使用 WinSCP 连接到各种实例,包括 Amazon Linux、Rocky Linux、SUSE 和 CentOS 6、7 和 8。所有使用其他操作系统的实例都已成功使用特定组合
- 密钥对(登录)
- 私有云平台
- 子网
- 防火墙(安全组)
因此,这些选择似乎都不存在错误。
在 WinSCP 中,我可以从其他实例克隆有效的 WinSCP 配置,然后(在调整新站点以适应更改的“主机名”并使用建议的登录用户名“ubuntu”后),我可以像连接其他有效的站点一样尝试连接。因此,问题似乎不是 WinSCP 配置不正确(除非我应该使用除“ubuntu”以外的其他用户名作为默认用户名)。
可以看到实例,但是仅针对 Ubuntu 实例的登录尝试失败。
没有可用的受支持的身份验证方法(服务器发送:公钥)
和
使用用户名“ubuntu”。服务器拒绝我们的密钥。身份验证失败。
我查看了其他一些与“服务器拒绝我们的密钥”有关的问题,但这不是密钥对本身的问题,因为它适用于许多其他实例。它似乎也不可能是其他实例中一直有效的其他常见元素。错误消息本身表明它确实看到了推荐的登录用户名“ubuntu”(我甚至尝试了有时用于 AWS 实例登录的其他用户名,例如 ec2-user、admin、root,但这些用户名也不起作用)。
我也尝试创建第二个实例来检查创建第一个实例时是否存在侥幸或错误,但并没有什么区别。
由于此次失败的登录是默认用户的首次登录尝试,因此我无法以其他用户身份登录并进行内部探索或更改实例。
如果这很重要的话,我正在使用
最小 Ubuntu 22.04 LTS - Jammy https://aws.amazon.com/marketplace/pp/prodview-o5bowpuwmx3ng
更新 1:同样的事情发生在 Ubuntu 22.04 LTS-Jammy https://aws.amazon.com/marketplace/pp/prodview-f2if34z3a4e3i
我想知道 Ubuntu 处理通信的方式是否与其他运行的操作系统不同,需要不同的设置。
更新2:根据答案中的线索拉胡尔·贾恩,我尝试使用基于以前的 Minimal Ubuntu LTS 版本的实例进行了快速测试。
最小 Ubuntu 20.04 LTS - Focal https://aws.amazon.com/marketplace/pp/prodview-meawmysinhrrs
那个工作得很好。因此,这个问题似乎是自 20.04 Focal Fossa 以来的变化,而且很可能与需要较新的 PuTTY 代码库的身份验证更改有关,正如 rahul jain 所建议的那样。我会做更多的测试,但到目前为止答案看起来不错。
答案1
尝试将 putty 更新到最新版本,我使用的是旧版本,将其更新到 0.76 并且运行正常 https://www.chiark.greenend.org.uk/~sgtatham/putty/
希望这可以帮助
Eric 补充道:对于像我一样使用 WinSCP 的人来说,等效的解决方案是升级到 WinSCP 版本 5.20(或更高版本)。目前,5.20 仍处于测试阶段。(目前最新版本是 5.19.6)
“WinSCP 5.20 是一个重大的应用程序更新。新功能和增强功能包括:
... SSH 核心升级至 PuTTY 0.76。其中包括支持 rsa-sha2-256 和 rsa-sha2-512 SSH 公钥算法。...”摘自WinSCP 的所有下载。
在 rahul jain 的回答和建议的帮助下,我能够将问题隔离到 WinSCP,然后找到这个相关的错误报告。
在 LAMP 堆栈上更新到 Ubuntu 22.04 beta 版后,“服务器拒绝我们的密钥”
WinSCP 问题指向相关问题“Bug 1952 – 支持 rsa-sha2-256 和 rsa-sha2-512 SSH 公钥算法“
PuTTY 0.76 适用于 rahul jain,可能是因为其 SSH 处理已升级(例如,版本 0.75 添加了“将默认 SSH 密钥指纹格式升级为 OpenSSH 样式的 SHA-256。将私钥文件格式升级为 PPK3,改进了密码哈希处理,并且不再使用 SHA-1。”)
“已知问题”发行说明Ubuntu 22.04 LTS(Jammy Jellyfish)导致了这个相关的 GitHub 问题,它描述了如何“openssh 弃用 ssh-rsa 密钥类型...“摘录:现在只需花费不到 5 万美元就可以对 SHA-1 算法进行选择前缀攻击。因此,我们将在近期的版本中默认禁用“ssh-rsa”公钥签名算法。”
并且“发行版正在接受这一点并弃用 ssh-rsa。Fedora 最近这样做了,它将出现在下一个主要的 Fedora 版本中。...”
据推测,Ubuntu 22.04 版本也出于类似原因弃用了较旧、安全性较差的 SSH 身份验证标准,这需要其他客户端软件进行改进。
答案2
由于 openssh-server 包更新,新版本不支持“ssh-rsa”算法,请参见此处 ->https://www.openssh.com/txt/release-8.8
# tail -f /var/log/auth.log
Jun 9 22:37:31 ip-yy-yy-yy-yy sshd[15652]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
Jun 9 22:37:31 ip-yy-yy-yy-yy sshd[15652]: Connection closed by authenticating user ubuntu zz.zz.zz.zz port 60931 [preauth]
您可以更新您的 ssh 客户端和/或将以下行添加到 /etc/ssh/sshd.conf。
PubkeyAcceptedAlgorithms +ssh-rsa
然后重启 sshd
service sshd restart
为了避免先有鸡还是先有蛋的问题(因为你无法访问它),你可以在 Docker 中使用一个小“技巧”(你需要在你的机器上安装 docker)
$ docker run -it --rm -v $(pwd):/homeuser ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
405f018f9d1d: Pull complete
Digest: sha256:b6b83d3c331794420340093eb706a6f152d9c1fa51b262d9bf34594887c2c7ac
Status: Downloaded newer image for ubuntu:latest
# apt update && apt install openssh-client -y
Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
Get:3 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [4653 B]
...
update-alternatives: warning: skip creation of /usr/share/man/man1/rcp.1.gz because associated file /usr/share/man/man1/scp.1.gz (of link group rcp) doesn't exist
Setting up libxext6:amd64 (2:1.3.4-1build1) ...
Setting up xauth (1:1.1-1build2) ...
Processing triggers for libc-bin (2.35-0ubuntu3) ...
# cd /homeuser/
# ssh [email protected] -i your-keypair.pem
The authenticity of host 'xx.xx.xx.xx (xx.xx.xx.xx)' can't be established.
ED25519 key fingerprint is SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'xx.xx.xx.xx' (ED25519) to the list of known hosts.
Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-1004-aws x86_64)
这样,您就可以访问您的盒子。
答案3
您的新 AWS 实例拒绝密钥的原因可能有多种。这可能是密钥本身的问题、密钥上的权限问题或密钥的使用方式问题。需要检查的一件事是密钥上的权限。确保密钥具有您尝试连接的用户的正确权限。此外,检查密钥是否使用正确。例如,如果您使用 SSH 密钥,请确保使用正确的密钥格式(即 ssh-rsa)。ClearScale (https://www.clearscale.com)可能会帮助您找到问题的答案,或者您可以联系亚马逊支持寻求帮助。干杯!