3

我正在尝试创建一个 gerrit 审查系统,并且能够成功地让 gerrit 在端口 8084 上运行,并且审查正在成功地在 29429 端口上运行。

当我尝试运行时,git clone ssh://user@ip:29429/myrepo.git我收到以下错误:

Cloning into 'myrepo'...
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 1024 a1:bc:b8:fe:e7:79:c9:34:96:28:7d:6f:d3:3d:af:9b
Connection abandoned.
fatal: Could not read from remote repository.

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

当我运行ssh -p 29429 user@ip gerrit ls-projects 时,它要求我输入密码。当我输入密码时,我可以看到 myrepo

以下也很好(确保用户对 gerrit 没问题)

$ ssh -p 29429 user@ip
Enter passphrase:

输入密码后,我得到以下信息

**** 欢迎来到 Gerrit 代码审查 ****

嗨用户,您已通过 SSH 成功连接。

不幸的是,交互式 shell 被禁用。要克隆托管的 Git 存储库,请使用:

git clone ssh://user@ipaddress:29429/REPOSITORY_NAME.git

与 ip 的连接已关闭。

请帮忙看看哪里错了。我做错了什么或错过了什么?

4

1 回答 1

6

问题在于腻子并连接到端口(29429)。事情是两点。

Point 1:如果你将私钥和公钥留在windows的.ssh文件夹中,那么当你执行ssh -p 29429 user@ip时,它会要求你输入密码并给你gerrit code review的欢迎信息。

要点 2. 克隆时如果你得到这个'服务器的主机密钥没有缓存在注册表中等 - 连接被放弃。致命:无法从远程存储库读取。”这是由于腻子未在该端口上连接造成的。

要解决此问题,请登录该特定端口(29429)上的腻子,然后接受主机密钥(基本上在弹出窗口中单击“是”)。您需要在这里了解它不会让您登录(这很好)。这只是缓存服务器密钥。

您可能想要删除 ~/.ssh/known_hosts 然后尝试 ssh user@ip 并登录,在客户端(Windows 机器)上的 .ssh 文件夹中创建 known_hosts 文件。但这不是它正在寻找的地方。腻子正在其他地方缓存它(我不知道在哪里,但它不在这里)

然后让你的 putty paegent 运行 - 加载你的私钥。然后尝试在 git bash 中克隆。这应该没问题。还要确保将Putty Key gen生成的公钥放在Gerrit - 设置 - ssh密钥中

如果您收到 Permission denied(public key) 异常,请检查您的 gerrit 用户名,它可能为空或无效(与您的 git 配置设置不同)。

请确保在运行 git config --global --edit 时(姓名和电子邮件 ID 应与您的 gerrit 设置匹配)。

于 2013-05-20T11:47:30.583 回答