【发布时间】:2020-12-22 21:34:31
【问题描述】:
我在 Ubuntu 上使用 NodeJS 为 ssh 生成 id_rsa 文件。我的代码如下所示,私有 ssh 密钥存储在一个名为 action.deployKey 的环境变量中。
import { isNullOrUndefined } from "./util";
import {promisify} from 'util';
import { appendFile } from 'fs';
const action = {
deployKey: `
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
`
}
const ssh = `${process.env.HOME}/.ssh`;
const createFile = promisify(appendFile)
await createFile(`${ssh}/id_rsa`, action.deployKey)
文件似乎正在创建中,但是当我尝试运行使用密钥的经过身份验证的请求时遇到以下错误。
Load key "/home/runner/.ssh/id_rsa": invalid format
我是否需要为此设置某种编码以使密钥有效?或者密钥是否可能没有正确写入文件?
ssh 客户端在发出尝试请求之前会打印以下内容,因此它似乎确实知道我添加了一个 id_rsa 文件。
Warning: Permanently added the RSA host key for IP address x.x.x.x to the list of known hosts.
我在 GitHub 操作中使用它,所以我唯一的见解是打印我不想做的密钥。
任何帮助将不胜感激!
【问题讨论】:
-
文件必须以换行符结尾。是这样吗?
-
该变量以换行符存储,但我想知道 Node 是否正在删除它?
-
最小的可重现示例 - 请添加重现问题的
action.deployKey分配。 -
完成。到目前为止,我已经尝试了很多事情,但我似乎无法让它发挥作用。有没有办法可以将其重新格式化为所需的格式?
-
您是否尝试删除每行前的前导空格、开始标记的第一个
-之前的 CR/LF 以及结束标记的最后一个-之后的 CR/LF 和空格?
标签: javascript node.js ssh