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

使用simple-git通过SSH克隆仓库出现publickey权限错误如何解决

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

上述报错本质是SSH公钥认证失败,可按以下步骤排查和解决:

排查步骤
  • 先在运行代码的同环境、同用户下执行SSH连通性测试,替换命令中的域名为你使用的Git服务域名:
    ssh -T git@github.com
    
    如果执行后也报同样的权限错误,说明是系统级SSH配置问题,和代码无关,优先检查以下项:
    • 检查~/.ssh目录下是否存在SSH密钥对(默认命名为id_rsa私钥和id_rsa.pub公钥),不存在则执行ssh-keygen -t rsa -b 4096 -C "你的账号邮箱"生成
    • 检查公钥id_rsa.pub的完整内容是否已经添加到Git服务账号的SSH密钥配置中
    • 检查本地SSH文件权限是否符合要求:~/.ssh目录权限为700,id_rsa私钥权限为600,权限过高会导致SSH拒绝读取密钥
    • 如果代码运行在容器、CI/CD环境中,确认SSH私钥已经正确挂载到运行环境的~/.ssh目录下,且权限配置正确
  • 如果手动测试SSH连通性正常,说明是simple-git运行时没有读取到正确的SSH配置,需要在代码中补充相关配置。
解决方法

方法1:在simple-git初始化时指定SSH配置

修改simple-git初始化逻辑,通过配置项传入SSH命令参数,指定私钥路径即可:

import simpleGit, { SimpleGit, SimpleGitOptions } from 'simple-git';

const options: Partial<SimpleGitOptions> = {
  baseDir: process.cwd(),
  binary: 'git',
  maxConcurrentProcesses: 6,
  trimmed: false,
  // 核心配置:指定SSH命令,替换为你自己的私钥路径
  config: ['core.sshCommand=ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no']
};

const git: SimpleGit = simpleGit(options);
const sshUri = 'git@..........'
const localPath = '/usr/workspace';
git
 .clone(
   sshUri,
   localPath
 ).then((data) => {
    console.log('success');
 }).catch((err) => {
     console.log(err);
 });

配置参数说明:

  • -i ~/.ssh/id_rsa:指定读取的私钥路径,如果你使用自定义命名的密钥,替换为对应的实际路径即可
  • -o StrictHostKeyChecking=no:跳过首次连接时的主机校验提示,避免非交互环境下进程卡住

方法2:全局配置Git的SSH命令(可选)

如果不想在代码中硬编码配置,可在运行代码的用户下执行全局Git配置:

git config --global core.sshCommand "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no"

配置完成后原有代码无需修改即可正常运行。

特殊场景适配

如果你的Git服务使用非默认22端口,或者同一环境下有多个Git账号对应不同密钥,直接修改SSH命令参数即可:
示例(端口为2222、使用自定义密钥):
core.sshCommand=ssh -i ~/.ssh/自定义私钥文件名 -p 2222 -o StrictHostKeyChecking=no


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:27:02