使用 ssh 和辅助(非默认)公钥克隆 git 存储库时遇到问题

问题描述 投票:0回答:5

我正在尝试通过 SSH 访问 BitBucket 上的旧 git 存储库。 客户端或 BitBucket 上的 SSH 密钥均未更改,但克隆存储库失败。

git clone [email protected]:william_ferguson_au/lexathon-server.git
Cloning into 'lexathon-server'...
The requested repository either does not exist or you do not have access. If you believe this repository exists and you have access, make sure you're authenticated.
fatal: Could not read from remote repository.

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

响应者建议的命令变化:

git clone ssh://[email protected]/william_ferguson_au/lexathon-server.git
Cloning into 'lexathon-server'...
The requested repository either does not exist or you do not have access. If you believe this repository exists and you have access, make sure you're authenticated.
fatal: Could not read from remote repository.

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


git clone ssh://[email protected]:william_ferguson_au/lexathon-server.git
Cloning into 'lexathon-server'...
ssh: Could not resolve hostname bitbucket.org:william_ferguson_au: Name or service not known
fatal: Could not read from remote repository.

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


我尝试按照https://confluence.atlassian.com/bitbucketserverkb/git-clone-fails-when-cloning-via-ssh-879243661.html的建议创建一个新的SSH密钥并将其上传到BitBucket,但是没有效果。

有人可以指出我正确的方向吗?

注意存储库存在,并且我拥有正确的访问权限。 我怎么知道这个?因为我在同一台机器上的其他地方克隆了这个存储库,并且我能够推送到它。

git ssh bitbucket openssh
5个回答
2
投票

就像其他人所说的那样,您不需要

ssh -vvv
,但是如果您要使用
ssh://
格式,那么您需要使用
git clone ssh://[email protected]/william_ferguson_au/lexathon-server.git
(与
ssh://
一起使用,并且之间有斜线)
bitbucket.org
william_ferguson_au
代替冒号)。

您还可以使用

git clone [email protected]:william_ferguson_au/lexathon-server.git
(不带
ssh://
,并在
bitbucket.org
william_ferguson_au
之间添加冒号)。两者都可以,但一次只能使用一个。


1
投票

该命令的简短版本,

ssh -vvv git
表示“非常详细地使用 ssh 到主机
git
,并带有参数......”

尝试一下

git clone ...


1
投票

您只需要传递这个命令即可。

git clone ssh://[email protected]:william_ferguson_au/lexathon-server.git

没有理由运行

ssh -vvv git ...
当您这样做时,您将参数传递给
ssh
来查找主机名
git
,错误告诉您它不理解传递的参数并且主机不理解不存在。

如果 ssh 密钥已过期或不再有效,您将从 bitbucket 收到 401 错误,否则,克隆将开始。


0
投票

链接页面表示该命令必须是

GIT_SSH_COMMAND="ssh -vvv" git clone ssh://git@<bitbucket URL>:<bitbucket port>/<project key>/<repository slug>.git

不是

ssh -vvv git

更新。对于 w32 (cmd),命令应该是

set GIT_SSH_COMMAND="ssh -vvv"
git clone ssh://git@<bitbucket URL>:<bitbucket port>/<project key>/<repository slug>.git
set GIT_SSH_COMMAND=

更新2。对于

ssh://
URL,语法必须是
ssh://[email protected]/william_ferguson_au/lexathon-server.git
但不是
ssh://[email protected]:william_ferguson_au/lexathon-server.git
。请注意
:
/
之间的区别。对于类似 scp 的 URL,语法为
[email protected]:william_ferguson_au/lexathon-server.git
。对于
ssh://
URL
:
可用于非标准端口:
ssh://[email protected]:22/william_ferguson_au/lexathon-server.git
。对于类似 scp 的 URL,不能使用非标准端口。

请参阅文档


0
投票

好的,所以使用

set GIT_SSH_COMMAND=ssh -vvv
git clone git@<bitbucket URL>:<project key>/<repository slug>.git

我可以看到它使用默认的 ssh 公钥 (.ssh/id_rsa) 通过 BitBucket 进行身份验证,但随后无法找到该存储库,因为默认公钥的用户无权访问该存储库。

我需要做的是将“-”加上项目密钥附加到 BitBucket URL 中。即

git clone git@<bitbucket URL>-<project key>:<project key>/<repository slug>.git

这会找到正确的公钥来对 BB 存储库进行身份验证。身份验证成功,并且找到并克隆了存储库。

© www.soinside.com 2019 - 2024. All rights reserved.