使用Moovweb时,Windows上的权限被拒绝(publickey)错误

我能够使用我的Mac和Linux机器上的SSH密钥和Moovweb凭据进行身份validation,生成,推送等。

但是,在我的Windows机器上,使用Git Bash,我得到一个SSH Permission denied (publickey)错误。 错误消息如下:

 $> moov generate 123dsfsdsf nytimes.com Running environment checks. Verifying that git is installed...OK Checking that current 123dsfsdsf directory doesn't exist...OK Registering project with MoovCloud. Authenticating with MoovCloud. Checking for git access...Enter passphrase for key '/Users/firstname.lastname/.ssh/id_rsa': Enter passphrase for key '/Users/firstname.lastname/.ssh/id_rsa': FAILED > Need to upload an ssh key in order to generate a project... Found the following SSH public keys: 1 ) id_rsa.pub 2 ) new_rsa.pub Which would you like to use with your Moovweb account? 2 Uploading public key... Successfully uploaded public key new_rsa.pub as 'firstname.lastname@GGT.local' You are now ready to push projects to MoovCloud! Creating project in MoovCloud...OK Generating files...OK Cloning project locally. Enter passphrase for key '/Users/firstname.lastname/.ssh/id_rsa': Enter passphrase for key '/Users/firstname.lastname/.ssh/id_rsa': Cloning into '123dsfsdsf'... Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. ERROR: Error cloning git repo: exit status 128 Please try cloning the repository (git clone moov@git.moovweb.com:firstnameglastname/123dsfsdsf.git) again later. Try 'moov help generate' to find out details. 

看起来像一个特定于Windows的SSH错误。 任何解决方法?

正如前面的答案中所提到的,Windows中的Permission denied错误是因为您正尝试使用除id_rsa以外的密钥。

Windows缺乏Linux和Mac在尝试通过SSH连接到服务器时尝试使用所有公用密钥的信息。 如果你使用的是ssh命令,你可以通过传递-i标志和键的路径来告诉它使用哪个键:

 ssh -i ~/.ssh/moovweb_rsa moov@git.moovweb.com 

如果您已经将moovweb_rsa.pub上传到控制台(通过moov login命令或控制台UI),上述命令应该工作得很好。 然而,尝试任何与git相关的命令都会失败,因为Git不能让您选择连接到git远程时使用哪个密钥。 因此,SSH被迫使用默认密钥id_rsa ,如果该密钥不起作用(或不存在),则连接将失败,并显示权限被拒绝的错误。

正如其他答案中提出的一种可能的解决方案是简单地将您的密钥重命名为id_rsa 。 对大多数人来说,这是一个很好的解决方案。 但是,如果你已经有一个id_rsa键,并且你希望在Moovweb中使用不同的键,你可以通过添加以下内容来编辑你的~/.ssh/config文件:

 Host git.moovweb.com IdentityFile ~/.ssh/moovweb_rsa 

如果你在~/.ssh/config文件中添加上面的行(如果不存在,创建它),你应该能够成功地让Git与Moovweb远程git服务器进行通信。 配置基本上告诉SSH,对于给定的主机( git.moovweb.com ),SSH应该使用给定的密钥而不是默认值。

所有的Git遥控器都没有任何价值。 与Github,Heroku等的交互…也经历了Windows中的这个问题。 如果你愿意的话,你可以很容易地扩展你的~/.ssh/config文件,为每个服务使用单独的SSH密钥:

 Host git.moovweb.com IdentityFile ~/.ssh/moovweb_rsa Host github.com IdentityFile ~/.ssh/github_rsa Host heroku.com IdentityFile ~/.ssh/heroku_rsa 

快速和肮脏的解决方案:只使用默认的id_rsa.pub

一些说明:

  1. 确保你输入正确的密码到id_rsa.pub
  2. 不要使用你的其他键, new_rsa.pub

事实证明,Windows Git Bash并不完全符合Mac / Linux用户习惯的所有酷实用程序。 具体而言,您没有运行ssh-agent来帮助处理多个密钥。 没有ssh-agentgit命令似乎只使用默认的id_rsa.pub键。

您可以验证这是Github真棒SSH故障排除指南之后的SSH / Windows问题。 无论您尝试连接到哪个SSH / Git服务器,您都将获得Permission denied (publickey)Permission denied (publickey)