git push上的SSH“没有这样的文件或目录”错误
Posted
技术标签:
【中文标题】git push上的SSH“没有这样的文件或目录”错误【英文标题】:SSH "no such file or directory" error on git push 【发布时间】:2021-11-22 17:50:49 【问题描述】:我有一个位于~/.ssh/github_rsa
的私钥,对应的公钥已经上传到我的 Github 帐户。我创建了一个存储库并将其设置为我正在使用的目录的远程,在该目录的.git
文件夹中,我有以下config
文件:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
sshCommand = 'ssh -i ~/.ssh/github_rsa -o IdentitiesOnly=yes'
[remote "repoName"]
url= git@github.com:myusername/repoName.git
fetch = +refs/heads/*:refs/remotes/repoName/*
当我运行git push -u repoName main
时,我收到以下错误:
'ssh -i ~/.ssh/github_rsa -o IdentitiesOnly=yes': line 1: ssh -i github_rsa -o IdentitiesOnly=yes: No such file or directory
fatal: Could not read from remote repository.
删除-o IdentitiesOnly=yes
无效。将密钥的权限从 600 更改为 400 也没有效果。该文件确实存在,并且恰好存在于该路径中。
【问题讨论】:
【参考方案1】:gitconfig 不识别单引号。使用双引号。
[core]
sshCommand = "ssh -i ~/.ssh/github_rsa -o IdentitiesOnly=yes"
【讨论】:
谢谢。无论出于何种原因,我在网上找到的每个示例都使用单引号,但这解决了问题。 @user242007:可能这些示例是为使用 sh/bash 运行git config
的人编写的,以 set 这些,期望配置文件最终没有完全引用它(在这里也可以)。实际上,您说服 Git 尝试运行一个名为 ssh -i ~/.ssh/...
的命令(都是一个大词),而不是运行带有参数 -i
、身份文件路径等的命令 ssh
。
更典型的做法是使用 ssh 配置本身来设置您希望传递给特定主机的一个或多个身份,而不是在命令行中使用 -i
和 -o
选项,因为这可以与其他 ssh 命令一起使用(然后您可以运行 ssh -Tv git@github.com
进行测试,而不需要 -i
和 -o
选项)。以上是关于git push上的SSH“没有这样的文件或目录”错误的主要内容,如果未能解决你的问题,请参考以下文章
git pull 上的 OSX 10.10 yosemite beta:git-sh-setup:没有这样的文件或目录
气流 SSH 操作错误:[Errno 2] 没有这样的文件或目录:
“openssl/ssl.h:没有这样的文件或目录”在安装 Git 期间
ssh不工作,muxserver_listen bind():没有这样的文件或目录[关闭]
通过 Python 脚本调用 ProxyCommand 时“没有这样的文件或目录”
Windows 上的 Git Bash - 致命:无法创建“C:/Users/scharko00/Documents/GitHub/myProject/.git/index.lock”:没有这样的文件