我能够使用我的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
键 一些说明:
id_rsa.pub
new_rsa.pub
事实证明,Windows Git Bash并不完全符合Mac / Linux用户习惯的所有酷实用程序。 具体而言,您没有运行ssh-agent
来帮助处理多个密钥。 没有ssh-agent
, git
命令似乎只使用默认的id_rsa.pub
键。
您可以验证这是Github真棒SSH故障排除指南之后的SSH / Windows问题。 无论您尝试连接到哪个SSH / Git服务器,您都将获得Permission denied (publickey)
的Permission denied (publickey)
。