我遇到的问题类似于git - Server host key not cached中的问题,但有一个问题就是让最佳解决方案无效。
我正在尝试从Stash克隆存储库,这是一个来自Atlassian的应用程序,就像我们公司用来存储git存储库的git-hub。在我将公钥输入Stash之后,我使用Git Bash尝试使用系统提供的ssh地址从那里克隆存储库。结果如下:
$ git clone ssh://git@stash.mycompany.com:7999/teamproject/gitrepo.git
Cloning into 'gitrepo'...
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 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:12
Connection abandoned.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
由于我没有使用putty尝试连接,我尝试使用ssh连接服务器的解决方案:
$ ssh ssh://git@stash.mycompany.com:7999/teamproject/gitrepo.git
ssh: stash.mycompany.com:7999/teamproject/gitrepo.git: no address associated with name
如果我尝试缩短ssh可以识别的地址,我得到的指纹与git拒绝的指纹不同:
$ ssh ssh://git@stash.mycompany.com
The authenticity of host 'stash.mycompany.com (10.XX.XXX.XX)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:34.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
我选择不继续连接,因为如果我进行连接,它只会放入一个无法帮助git在我的known_hosts文件中执行其工作的条目。
任何人都知道如何解决这个问题?
答案 0 :(得分:4)
我有一位同事给我一个提示,最终让我解决了我的问题。我上面发布的直接问题的答案是我没有以预期的格式给ssh端口号。您没有像这样指定端口号...
ssh stash.mycompany.com:7999
......而是喜欢这样:
ssh -p 7999 stash.mycompany.com
这种语法导致ssh询问我是否要将主机存储在已知主机列表中,它给了我Stash告诉我它应该使用的指纹。 (在我说是的之后,ssh挂断了我的Git Bash提示,我不得不杀死整个Git Bash会话并开始一个新的。但至少主机已经存储在known_hosts文件中。:))
一旦我遇到这个问题,我唯一需要做的就是在这个线程github: No supported authentication methods available中应用一个解决方案,即在我的.bash_profile中为Git Bash设置GIT_SSH变量
export GIT_SSH=/bin/ssh.exe
在我完成并重新启动Git Bash后,git开始使用我的ssh密钥。