我正在尝试通过 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,但是没有效果。
有人可以指出我正确的方向吗?
注意存储库存在,并且我拥有正确的访问权限。 我怎么知道这个?因为我在同一台机器上的其他地方克隆了这个存储库,并且我能够推送到它。
就像其他人所说的那样,您不需要
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
之间添加冒号)。两者都可以,但一次只能使用一个。
该命令的简短版本,
ssh -vvv git
表示“非常详细地使用 ssh 到主机 git
,并带有参数......”
尝试一下
git clone ...
?
您只需要传递这个命令即可。
git clone ssh://[email protected]:william_ferguson_au/lexathon-server.git
没有理由运行
ssh -vvv git ...
当您这样做时,您将参数传递给 ssh
来查找主机名 git
,错误告诉您它不理解传递的参数并且主机不理解不存在。
如果 ssh 密钥已过期或不再有效,您将从 bitbucket 收到 401 错误,否则,克隆将开始。
链接页面表示该命令必须是
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,不能使用非标准端口。
请参阅文档。
好的,所以使用
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 存储库进行身份验证。身份验证成功,并且找到并克隆了存储库。