记一次ssh密钥登陆失败

1.背景

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

2.调查登陆失败原因

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

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

3.解决方法

1. 更新客户端密钥

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

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版本也是一致的,有清楚的朋友们欢迎补充。

相关推荐
XINGLOO2 天前
Mac怎么连接VPS?可以参考这几种方法
windows·ssh·mac
Nejosi_念旧3 天前
git报错解决:ssh: connect to host github.com port 22: Connection refused
git·ssh·github
xuanerya3 天前
使用 SSH 方式克隆 GitHub 仓库没有权限解决办法
运维·ssh·github
没有不重的名么5 天前
Tmux Xftp及Xshell的服务器使用方法
服务器·人工智能·深度学习·机器学习·ssh
妮妮喔妮8 天前
SSH协议的GIT转换
运维·git·ssh
conkl8 天前
Linux 零基础万字入门指南(进阶详解版)
linux·运维·服务器·ssh·文件管理·shell·linux基础
Tearstornbyrain9 天前
在Ubuntu24.04中使用ssh连接本地git仓库到github远程仓库
linux·git·ubuntu·ssh·github
CodeDevMaster12 天前
Linux中tmux入门使用指南:告别SSH断线烦恼,提升终端工作效率的神器
linux·运维·ssh
monster_风铃14 天前
华为实验:SSH
运维·ssh