12

我犯了一个错误,删除了“.ssh”文件夹中的“known_hosts”文件!现在我无法拉入或推入 BitBucket 存储库。

我该如何解决?

4

2 回答 2

16

尝试执行:

ssh -T git@bitbucket.org

它会给你一个消息,比如:

The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? yes

验证主机指纹后说yes(详见文末)。

然后你应该得到这个警告,你可以安全地忽略它:

Warning: Permanently added 'bitbucket.org,207.223.240.181' (RSA) to the list of known hosts.
conq: logged in as tuxdude.

You can use git or hg to connect to Bitbucket. Shell access is disabled.

尝试再次运行git pullor ,这次它应该可以工作了。git push

注意:我假设您仍然.ssh/id_rsa安全地拥有您的文件,这是您用于 SSH 身份验证的私钥。

验证主机指纹

正如@Pascal_dher 指出的那样,如果您不验证主机的指纹(使用一些您可以依赖的带外方法),您可能会成为中间人攻击的受害者。对于 bitbucket,信息可在此处获得

于 2013-03-20T22:17:27.897 回答
3

“将 ssh 与 BitBucket 一起使用”页面中,下一次使用 ssh 应该重新创建该known_hosts文件:

Bitbucket 主机只允许 Git 和 Mercurial 建立 SSH 连接。
首次使用 SSH URL 访问 Bitbucket 时,您的 SSH 客户端会检查 Bitbucket 主机是否为已知主机。如果主机不在您的~/.ssh/known_hosts文件中,SSH 会警告您正在将 Bitbucket 主机添加到已知主机:

$ hg clone ssh://hg@bitbucket.org/newuserme/mquotefork testkey
The authenticity of host 'bitbucket.org (207.223.240.182)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? 

如果您查看存储的已知主机的内容,您会发现实际密钥以 base64 编码格式存储:

bitbucket.org,207.223.240.182 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==

因此,只需使用 ssh 地址(或仅 ssh 命令)就足以再次触发该消息。

于 2013-03-20T22:15:56.970 回答