12

我可以在我的 Mac 和 Linux 机器上使用我的 SSH 密钥和 Moovweb 凭据进行身份验证、生成、推送等。

但是,在我的 Windows 机器上,使用 Git Bash,我收到 SSHPermission 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 错误。任何解决方法?

4

2 回答 2

16

因此,如先前答案中所述Permission denied,Windows 中的错误是因为您尝试使用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
于 2013-06-30T06:18:12.693 回答
2

快速而肮脏的解决方案:仅使用默认id_rsa.pub密钥

一些注意事项:

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

事实证明,Windows Git Bash 并没有配备 Mac/Linux 用户习惯的所有酷实用程序。具体来说,您无需ssh-agent运行来帮助处理多个键。没有ssh-agent,该git命令似乎只使用默认id_rsa.pub键。

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

于 2013-06-29T18:20:49.910 回答