记一次ssh密钥登陆失败

1.背景

腾讯云中目前能够在控制面板中生成密钥对,并将公钥传输至服务器,用户能够手动下载私钥。然而当我尝试使用mobaXsterm登陆时发现一直提示登陆失败,而无论是在腾讯云控制台中使用私钥登陆还是通过vscode的插件ssh-remote登陆都不会产生该问题。

2.调查登陆失败原因

通过检查服务器 SSH 日志(通常位于 /var/log/auth.log 或 /var/log/secure)。 发现本次报错日志:

原因呼之欲出,是由于签名算法ssh-rsa不被接受了,从 OpenSSH 8.8 开始,默认禁用了 ssh-rsa,因为它存在潜在的安全风险。

3.解决方法

1. 更新客户端密钥:

推荐使用更安全的算法(如 ed25519 或 ecdsa)生成新的密钥对:

bash 复制代码
ssh-keygen -t ed25519

然后将新公钥添加到服务器的 ~/.ssh/authorized_keys 文件中。

2.修改服务器配置(不推荐) :

如果需要继续使用 ssh-rsa,可以修改 /etc/ssh/sshd_config,添加或修改以下行:

复制代码
PubkeyAcceptedAlgorithms +ssh-rsa

重启 SSH 服务:

bash 复制代码
sudo systemctl restart sshd

注意:这种方法会降低安全性。

4.rsa-ssh不安全的原因

1. SHA-1 哈希算法的弱点

  • ssh-rsa 签名算法默认使用 SHA-1 作为哈希函数。
  • SHA-1 已被证明存在严重的碰撞漏洞(即两个不同的输入可以生成相同的哈希值)。早在 2017 年,Google 就成功实现了 SHA-1 的碰撞攻击(称为 SHAttered)。
  • 这些漏洞使得 SHA-1 不再适合用于安全敏感的场景,包括 SSH 认证。

2. RSA 密钥长度不足

  • 早期的 ssh-rsa 实现可能使用较短的 RSA 密钥(如 1024 位)。
  • 随着计算能力的提升,1024 位的 RSA 密钥已被认为不够安全,容易被暴力破解。
  • 虽然现代实现通常使用 2048 位或更长的 RSA 密钥,但 ssh-rsa 的整体设计仍然依赖于 SHA-1,因此仍然存在风险。

3. 缺乏前向安全性

  • ssh-rsa 本身不具备前向安全性(Forward Secrecy)。如果私钥被泄露,攻击者可以解密之前截获的所有通信。
  • 现代加密协议(如 ECDSA 和 Ed25519)通过使用临时密钥对来提供前向安全性。

5.其他

至于为什么vscode远程连接时为什么能够正常连接,目前还没找到原因,两者使用的ssh配置应该是同一份,检查两者使用的open-SSH版本也是一致的,有清楚的朋友们欢迎补充。

相关推荐
qetfw4 小时前
Debian SSH 安全配置:端口、来源限制与免密登录
linux·安全·debian·ssh
Julien20041 天前
管理 Ansible 配置文件
linux·运维·服务器·ssh·学习方法
超级大福宝2 天前
VS Code Remote-SSH 因 RemoteForward 端口冲突导致连接失败的排查与解决
运维·服务器·windows·vscode·ssh
Lucas_coding2 天前
SSH 常见用法(四):使用 SCP 和 SFTP 远程传输文件
运维·ssh
酣大智3 天前
H3C MSR3600 交换机配置 SSH
网络·ssh·智能路由器
ai小陈6 天前
GPU服务器租用存储验收:检查点写入与磁盘吞吐实战
运维·服务器·人工智能·ai·ssh·gpu算力
寺中人6 天前
Xshell 完全入门指南:从安装到实战,远程连接+文件传输+会话管理全拆解
git·ssh·github·php·远程连接·xshell·运维工具
Julien20048 天前
Docker 网络(一)
linux·运维·服务器·ssh·学习方法
ggaofeng8 天前
精简版ssh(去掉认证和加密流程,更清晰的展示远程登录的底层实现)
运维·ssh
YumiProxy9 天前
服务器动态IP导致SSH频繁断连?从保活配置到自动重连的完整排查方案
服务器·tcp/ip·ssh