win10默认的ssh-keygen生成的id.rsa私钥经常是:
OpenSSH 的新格式密钥。
会导致xshell导入失败,无法秘钥登录服务器~
需要将密钥转换为传统的 PEM 格式。

记录一下

解决方案

1. 转换密钥格式

在 Windows PowerShell 或 CMD 中执行:

# 转换私钥格式
ssh-keygen -p -m PEM -f C:\Users\admin\.ssh\id_rsa

执行过程

  • 会提示:Enter old passphrase: (如果密钥有密码就输入,没有就直接回车)
  • 会提示:Enter new passphrase (empty for no passphrase): (直接回车,保持无密码)
  • 会提示:Enter same passphrase again: (直接回车)

2. 验证转换结果

转换后,用记事本打开 C:\Users\admin\.ssh\id_rsa,现在应该显示:

-----BEGIN RSA PRIVATE KEY-----
[base64编码内容]
-----END RSA PRIVATE KEY-----

3. 在 Xshell 中导入

现在重新在 Xshell 中导入:

  1. 工具 → 用户密钥管理者
  2. 点击 “导入”
  3. 选择转换后的 C:\Users\admin\.ssh\id_rsa 文件
  4. 应该能成功导入

4. 配置会话

在会话属性中:

  • 连接 → 用户身份验证
  • 方法:Public Key
  • 用户密钥:选择刚刚导入的密钥
  • 用户名:填写服务器用户名

备选方案

如果转换后仍有问题,直接在 Xshell 中生成新密钥:

  1. 在 Xshell 中生成

    • 工具 → 用户密钥管理者 → 生成
    • 选择 RSA 2048
    • 完成生成
  2. 获取公钥

    • 选中新密钥 → 属性 → 公钥
    • 复制公钥内容
  3. 添加到服务器

    # 在 CentOS 服务器上执行
    echo "复制的公钥内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    

推荐先尝试第1步的格式转换,这样可以继续使用现有的密钥,不需要在服务器上重新配置公钥。

另外同事的mac应该也有问题,我估计他默认用户没 没写 :
ssh root@xxx ,他没让我看他电脑,回头找台mac排查再说吧

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐