win10秘钥登录linux问题
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 中导入:
- 工具 → 用户密钥管理者
- 点击 “导入”
- 选择转换后的
C:\Users\admin\.ssh\id_rsa
文件 - 应该能成功导入
4. 配置会话
在会话属性中:
- 连接 → 用户身份验证
- 方法:Public Key
- 用户密钥:选择刚刚导入的密钥
- 用户名:填写服务器用户名
备选方案
如果转换后仍有问题,直接在 Xshell 中生成新密钥:
-
在 Xshell 中生成:
- 工具 → 用户密钥管理者 → 生成
- 选择 RSA 2048
- 完成生成
-
获取公钥:
- 选中新密钥 → 属性 → 公钥
- 复制公钥内容
-
添加到服务器:
# 在 CentOS 服务器上执行 echo "复制的公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
推荐先尝试第1步的格式转换,这样可以继续使用现有的密钥,不需要在服务器上重新配置公钥。
另外同事的mac应该也有问题,我估计他默认用户没 没写 :
ssh root@xxx ,他没让我看他电脑,回头找台mac排查再说吧