You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中使用exec执行git clone时,如何单行传入公钥密码短语?

解决Git克隆时通过Node.js exec传入公钥密码短语的问题

没问题,我来帮你搞定这个需求!要在exec的单行命令里传入公钥密码短语完成克隆,且不留下持久化的密码记录,你可以借助sshpass这个工具(需要先在系统上安装),它能把密码直接传递给SSH进程,让Git克隆自动完成身份验证。

下面是修改后的Node.js代码:

const { exec } = require('child_process');
// 记得替换成你的实际仓库地址和密码短语
const repoUrl = '<your-repo-path>.git';
const passphrase = '<your-passphrase>';

// 通过GIT_SSH_COMMAND环境变量注入带密码的SSH命令
exec(`GIT_SSH_COMMAND="sshpass -p '${passphrase}' ssh" git clone ${repoUrl}`, (err, stdout, stderr) => {
  if (err) {
    console.error('克隆出错啦:', err);
    return;
  }
  console.log(`执行输出: ${stdout}`);
  console.log(`错误输出: ${stderr}`);
});

几个关键注意点:

  • 安全提示:这种方式下,密码短语会短暂出现在系统的进程列表里(比如用ps命令能看到),所以只建议在本地测试或者完全信任的环境里用,别在生产环境这么搞哦。
  • 安装sshpass:如果你的系统还没装这个工具,得先安装:
    • Debian/Ubuntu系统:sudo apt-get install sshpass
    • macOS:用Homebrew装 brew install sshpass
    • Windows:可以用Chocolatey包管理器安装 choco install sshpass

要是你不想依赖第三方工具,其实还有用ssh-agent临时加载密钥的方案,但那个没法做成纯单行命令,还得处理额外的进程,不符合你要单行命令的要求,所以sshpass是最直接的选择。

内容的提问来源于stack exchange,提问作者Kalanamith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:01:52