无法在Windows 7中为Heroku生成SSH公钥

31
当我在我的电脑上通过cmd尝试heroku login时,它会显示:

找不到现有的公钥
您想要生成一个吗?[YN]

之后,当我按下“y”并输入时,它会显示:

正在生成新的ssh公钥
无法生成密钥:“ssh-keygen”不是内部或外部命令,可操作的程序或批处理文件

请帮助我。

1
请查看此前的答案:https://dev59.com/z2gt5IYBdhLWcg3w2Q-U#11771907 - Austin Lin
@user2098336,选择解决你问题的方案非常重要,这有助于帮助未来遇到同样问题的其他程序员! - Jimmy Obonyo Abor
4个回答

34

Heroku工具包包含git发行版,其中包括所需的ssh-keygen.exe。我刚刚在C:\Program Files\git\bin中找到了它。定位您的git文件夹,并按此处描述将其添加到系统路径中:superuser.com/questions/284342/


4
根据另一个答案的评论,并且因为这是得到最多赞(因为它是正确的),我需要指出:如果你使用 git bash 命令行界面,使用 heroku auth:login 登录 Heroku,你将能够生成一个SSH密钥。如果你在Windows上使用普通的 cmd shell 使用相同的命令,则需要将你的Git目录包含在你的PATH路径中;造成这种行为的原因是,正如另一个评论所述,当运行Git bash时,它设置了PATH路径。 - Chris Cirefice
@ChrisCirefice 谢谢你! - Rob Grant
在我的情况下,它位于C:\Program Files\Git\usr\bin!(针对Win 10系统) - CodeToLife

16

我之前也遇到了同样的问题,但是我已经解决了。我安装了另一个CMD,名为Git Bash,您可以免费下载(http://git-scm.com/downloads),然后在该CMD中重复执行命令,就可以正常工作了!


3
我很确定现在的Heroku工具包已经包括了Git Bash,即使在发布文章时没有。但是,我和你犯了同样的错误,习惯上直接使用CMD -- 会出现相同的错误。既然我已经有了Git Bash,我尝试使用它,结果非常好!谢谢。 - Todd

1
对于Win7 64位用户来说,文件%HerokuPath%s\bin\ssh-keygen.bat的外观如下:
@SETLOCAL
@SET HOME=%USERPROFILE%
@"%HerokuPath%\..\Git\bin\ssh-keygen.exe" %*

但是Heroku将Git安装在Program Files (x86)中,因此如果您更新.bat文件为:

@SETLOCAL
@SET HOME=%USERPROFILE%
@"C:\Program Files (x86)\Git\bin\ssh-keygen.exe" %*

然后,您应该能够生成您的SSH密钥。

0

Windows 10-64位

我已经安装了git,然后安装了heroku工具包(我认为重新安装了git)

我在我的环境变量中有C\Program Files (x86)\Heroku\bin(可能是在安装heroku工具包时生成的),如果我查看该文件路径,我有一个ssh-keygen.bat - 所以看起来我应该能够从命令行中运行ssh-keygen -t rsa

那将会太容易了,相反我得到了:

C:\Program Files (x86)\Git\bin>ssh-keygen -t rsa -f id_rsa
'"C:\Program Files (x86)\Heroku\..\Git\bin\ssh-keygen.exe"' is not recognized as an internal or external command,
operable program or batch file.

解决方案

在命令行中输入bash,进入git bash模式,然后运行ssh-keygen -t rsa

git bash:

mamwo@DESKTOP-9GVG6K8 MINGW32 /bin
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/mamwo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/mamwo/.ssh/id_rsa.
Your public key has been saved in /c/Users/mamwo/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:MMMYYYPPPUUUBBBLLIIICCKKEEEEYYYY mamwo@DESKTOP-9GVG6K8
The key's randomart image is:

现在当我查看C/User/mamwo/.ssh时(对我来说最好的方式是通过pycharms文件夹 - windows很烂),我看到了我的id_rsa和id_rsa.pub

但是这个“无法生成公钥”的问题始于我在将我的repo(来自github)克隆到新电脑时遇到了“我没有公钥可添加”的问题,发现我可以推送到github但不能推送到heroku。

现在我有了这些密钥 - 我必须添加它们

C:\Users\mamwo\Desktop\mv>git push heroku master
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

C:\Users\mamwo\Desktop\mv>heroku keys
You have no keys.

C:\Users\mamwo\Desktop\mv>heroku keys:add
Found an SSH public key at C:/Users/mamwo/.ssh/id_rsa.pub
Would you like to upload it to Heroku? [Yn]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接