Skip to content
字数
785 字
阅读时间
4 分钟

vpn, 先确保git能访问到远程仓库的服务器 应该使用 https 链接,但是错误的使用了 ssh 的链接 用 https 操纵 远程仓库时, 不需要 ssh密钥 tortoisegit和git用的ssh私钥格式不一样, TortoiseGit 默认使用 PuTTY 格式(.ppk),而 Git 默认使用 OpenSSH 格式(id_rsa)。这两不通用

比如雄安云的git仓库中, .git/config:

config
[core]

  repositoryformatversion = 0

  filemode = false

  bare = false

  logallrefupdates = true

  symlinks = false

  ignorecase = true

[remote "origin"]

  url = https://gitlab.ixayun.com/ixayun/hrmsc-web.git

  fetch = +refs/heads/*:refs/remotes/origin/*

  puttykeyfile = C:\\Users\\scz_meowr15\\Desktop\\putty_key\\3.ppk

[branch "master"]

  remote = origin

  merge = refs/heads/master

puttykeyfile 代表密钥的地址, url 代表远程仓库地址, 即使 用来 密钥也未必是 ssh 链接方式,如果更改为一下配置

[core]

  repositoryformatversion = 0

  filemode = false

  bare = false

  logallrefupdates = true

  symlinks = false

  ignorecase = true

[remote "origin"]

  url = ssh://git@gitlab.ixayun.com:1022/ixayun/hrmsc-web.git

  fetch = +refs/heads/*:refs/remotes/origin/*

  puttykeyfile = C:\\Users\\scz_meowr15\\Desktop\\putty_key\\3.ppk

[branch "master"]

  remote = origin

  merge = refs/heads/master

就会出错 在 Git 中,用户配置分为三种级别:

  1. 全局用户配置:对所有 Git 仓库生效。
  2. 本地用户配置:仅对当前仓库生效。
  3. 系统级别配置:对整个系统的 Git 配置生效(通常很少使用)。

直接在 Git 配置文件 (.git/config) 中添加 IdentityFile无效的,因为 Git 的本地配置文件不支持直接设置 SSH 私钥文件的路径。IdentityFile 是 OpenSSH 配置文件中的指令,不能在 Git 的配置文件中使用。

项目的 Git 本地配置中可以使用 core.sshCommand 来指定 SSH 命令和私钥路径。

git config core.sshCommand "ssh -i ~/.ssh/你的openssh si钥 -o IdentitiesOnly=yes" 可以在 .git/config 中添加一条配置, 最终使配置文件成为以下代码块的样子

ini
[core]
	repositoryformatversion = 0
	filemode = false
	bare = false
	logallrefupdates = true
	symlinks = false
	ignorecase = true
	sshCommand = ssh -i ~/.ssh/你的openssh私钥 -o IdentitiesOnly=yes
[remote "origin"]
	url = git@github.com:你的仓库.git
	fetch = +refs/heads/*:refs/remotes/origin/*
	puttykeyfile = 你的putty密钥文件.ppk
[branch "main"]
	remote = origin
	merge = refs/heads/main
	vscode-merge-base = origin/main
[user]
	email =你的邮箱@example.com
	name = 你的名字

sshCommand 是 Git 提供的一种配置项,用来指定 Git 在执行 SSH 相关操作时(如 git clonegit pullgit push 等)使用的 SSH 命令。通过这个配置项,你可以自定义 Git 在连接远程仓库时使用的 SSH 参数,比如指定特定的 SSH 私钥、启用某些 SSH 选项等。

通常,Git 默认使用系统的 SSH 配置(~/.ssh/config 和默认的 SSH 密钥)。但是,如果你想为某个特定项目使用自定义的 SSH 设置,sshCommand 是一种非常方便的方式。

你如果在使用TortoiseGit请注意, TortoiseGit 默认使用 PuTTY 格式(.ppk),而 Git 默认使用 OpenSSH 格式(id_rsa)。这两种格式不是直接互通,需要转换

PuTTY 格式的私钥的位置可以直接在 puttykeyfile 后面指定

作者:电平逻辑
链接:https://juejin.cn/post/7425653740106924047
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

贡献者

The avatar of contributor named as sunchengzhi sunchengzhi

文件历史

撰写