"git push heroku master" 仍然要求进行身份验证。

90

我已执行:

$ heroku login

但是当我尝试推送时,仍然要求进行身份验证:

$ git push heroku master
Username for 'https://git.heroku.com': <email>
Password for 'https://<email>@git.heroku.com':

然后我收到一个警告:不要使用用户名和密码在Git上进行身份验证。

我再次运行 heroku login 并成功进行了身份验证,但我仍然遇到相同的问题。

我已经检查了远程:

$ git remote -v
heroku https://git@heroku.com/appname.git (fetch)
heroku https://git@heroku.com/appname.git (push)

我还生成了一个新的公钥,将其传递给Heroku并对其进行了验证:https://devcenter.heroku.com/articles/keys

我使用的是Git 1.9.5版本,操作系统为Windows 8。


你的ssh配置是什么样子的?你是否已经添加了主机条目? - drRobertz
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Rea G
也许我的评论只能帮助少数人,但我发现如果您的账户名称(Windows 账户)包含非 ASCII 字符,也会出现这个错误。希望这条评论能帮到某些人! - James
获取Heroku命令行工具,运行heroku login - undefined
21个回答

215

以下是我使用的登录信息:

用户名: 用于注册Heroku的电子邮件 (此字段也可以留空)

密码: Heroku授权令牌 (API密钥)

授权令牌可通过 $ heroku auth:token 或 Heroku 的帐户设置获取。


7
您的意思是,"blank" 实际上是指用户名中的 "空格"。 - Jody Fitzpatrick
17
好的,当我尝试输入“nothing”时,它显示无效输入。但是当我输入“blank”时,它可以正常工作。这是在Windows系统上。 - Jody Fitzpatrick
5
对我有用! 你也可以在https://dashboard.heroku.com/account -> API Key中获取授权密钥。 - dmikam
8
虽然这对我来说毫无意义,但它确实起了作用。像魔法一样。 - habitats
1
就像魔法一样。我进行了Heroku登录并成功登录,然后进行了检查。当再次要求输入用户名和密码时,我从网站获取了密码。现在它被称为API密钥。 - Mohy Eldeen
显示剩余4条评论

29

我遇到了同样的问题(git无法验证身份)。

事实是GIT想要从%HOME%/_netrc文件中读取认证数据,在Windows上你没有这个变量(只有%USERPROFILE%和%HOMEDRIVE% + %HOMEPATH%)

我将HOME设置为%USERPROFILE%(heroku保存_netrc文件的地方),然后GIT开始工作了。


你从哪里获取 %USERPROFILE%?我也尝试将 %HOME% 设置为绝对路径,但是我得到的只是未跟踪的 _netrc 文件。这对我不起作用。 - mr5
我正在设置 HOME=c:\users\razor,并且这是_netrc文件 c:\users\razor\_netrc 的位置。这是Heroku创建的。 - razor

18

首先找到由heroku创建的_netrc文件。在Windows系统中,它可以在C:\Users\User Name\_netrc中找到。

该文件包含git.heroku.com的凭据。

machine git.heroku.com
     login abcd123@gmail.com
     password xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

在执行$ git push heroku master命令后,当要求进行身份验证时,请使用该登录名和密码。


好的!谢谢! - Nikita
运行得非常顺畅。 - skidadon

18

用户名:您在Heroku注册时使用的电子邮件
密码:在Heroku网站上的账户设置中,由Heroku提供给您的API密钥

这对我有用。


1
在这里[https://dashboard.heroku.com/account],向下滚动屏幕并点击“显示”按钮。谢谢@Sarah。 - Raziza O

15

来自Heroku文档

输入以下命令:

# Enable SSH authentication
$ heroku create --ssh-git

# Redirect tall HTTPS calls to SSH
$ git config --global url.ssh://git@heroku.com/.insteadOf https://git.heroku.com/

8

我有完全相同的问题。在我的情况下,原因是我意外地使用了窗口控制台而不是Git bash。


说明了一个警告背后可能有很多原因。 - Rea G
我不认为这会导致问题,实际上我认为我使用的是Windows命令提示符... - andy mccullough
你应该使用Git bash吗? - Radu
我在使用Git bash后又遇到了另一个错误。也许我会继续使用cmd - mr5
你应该能够使用任何一种。或者两种都可以。这取决于您是否已经使用正确的Heroku凭据设置了上下文。 - dvlsg

6
如果有人仍然遇到困难,这个答案对我帮助很大:使用Heroku API密钥
首先,正如@Raziza O在评论中提到的那样,要获取Heroku API密钥。

https://dashboard.heroku.com/account。滚动屏幕并点击显示按钮。

然后,只需要运行 git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git HEAD:master

这是方法。 - Lounge9

5

将用户目录中的_netrc文件重命名为.netrc可以在Windows 7上为我解决问题。

......在尝试了许多其他教程中的所有步骤之后。

在cmd中运行第三个命令,可以运行您的用户目录或整个组合:

setx HOME %USERPROFILE%
cd %HOME%
REN _netrc .netrc

在我的情况下,我通过Windows命令提示符进行了登录,并想要在Cygwin中使用凭据。将位于我的用户文件夹中的文件.netrc重命名后,git才能识别它。 - Sonata

3

对我来说,这种情况发生在两种情况下:第一次使用时或长时间未使用git且自动注销。

无论哪种情况,您只需要运行heroku login,它将打开浏览器,以便您可以开始新会话。


3

生成长期的Heroku令牌,请使用以下方法:

heroku authorizations:create

示例输出:

Creating OAuth Authorization... done
Client:      <none>
ID:          XXXXXXXX-XXXX-4c9c-85f2-554f0f0c14fa
Description: Long-lived user authorization
Scope:       global
Token:       XXXXXXXX-XXXX-4ad5-ac64-44bbc01c2d95
Updated at:  Wed Mar 04 2020 12:00:00 GMT+0000 (Greenwich Mean Time) (less than a minute ago)

然后使用以下信息进行git操作:
username: blank (type the word blank)
pass: XXXXXXXX-XXXX-4ad5-ac64-44bbc01c2d95

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