Node.js 10使用ssh-ed25519密钥报错,加-m pem仍未解决
解决Node.js 10下ed25519密钥解析错误的方案
1. 确认程序读取的密钥路径是否正确
- 检查代码中硬编码、配置文件或环境变量指定的私钥路径,确保指向你新生成的PEM格式密钥,而非其他残留的旧密钥文件
- 可以在代码中临时添加日志,打印读取的私钥内容开头,确认是否是新生成的
-----BEGIN PRIVATE KEY-----格式
2. 验证密钥生成/转换的正确性
- 重新生成密钥时,务必用完整命令确保输出PKCS#8格式的PEM:
ssh-keygen -t ed25519 -m pem -f ~/.ssh/id_ed25519 - 如果已有密钥,可直接转换为PEM格式:
ssh-keygen -p -f ~/.ssh/id_ed25519 -m pem - 检查私钥文件开头,必须是
-----BEGIN PRIVATE KEY-----,而非-----BEGIN OPENSSH PRIVATE KEY-----(Node.js 10不支持后者)
3. 检查第三方库版本兼容性
- 若使用
ssh2这类SSH客户端库,Node.js 10对应的库版本需适配:ssh2v0.8.x及以上版本才较好支持ed25519的PEM密钥,确保你安装的库版本与Node.js 10兼容
4. 修复密钥文件权限
- Linux/macOS下私钥权限必须设为
600,否则部分库会拒绝读取,甚至 fallback 到其他路径的旧密钥:chmod 600 ~/.ssh/id_ed25519
5. 清理SSH代理缓存
- 若系统运行了ssh-agent,可能缓存了旧密钥,需重启代理并重新加载新密钥:
ssh-agent -k eval $(ssh-agent) ssh-add ~/.ssh/id_ed25519
内容的提问来源于stack exchange,提问作者stackuser
相关产品推荐
相关产品推荐

