使用`curl`在GitHub.com上创建一个启用两步验证的仓库

3

我使用curl在GitHub.com账户上创建仓库时遇到了问题(没有ssh)。

我使用Jekyll创建了一个基本的静态本地站点,我想将其推送到GitHub.com仓库(我想将该站点托管在<username>.github.io上,并根据GitHub页面上的说明,该仓库必须与包含本地站点的文件夹同名。

我为GitHub登录启用了双重身份验证,因此按照此帖子的指示,在请求头中使用选项-H "X-GitHub-OTP":<token>传递一个OTP /令牌(在应用程序设置中生成)。 我可以登录(此前此帖子曾提出Github登录不起作用的问题,原因是未正确关闭字符串"X-GitHub-OTP"),但现在登录成功后我收到一个400代码的响应。 这是我使用的curl命令:

$username="<username>"
$reponame="$username.github.io"
$token="<token>"
$apidom="https://api.github.com/user/repos/"
$curl -u $username -H '{"X-GitHub-OTPOTP":$token}' -d '{"name":$reponame,"description":$repodesc}' $apidom

以及响应消息:

<p><strong>We didn't receive a proper request from your browser.</strong></p>
<p>Sorry about that. Please try refreshing and contact us if the problem persists.</p>
<div id="suggestions">
<a href="https://github.com/contact">Contact Support</a> &mdash;
<a href="https://status.github.com">GitHub Status</a> &mdash;
<a href="https://twitter.com/githubstatus">@githubstatus</a>
</div>
2个回答

1

谢谢,我已经使用设置创建了个人令牌,但它仍然无法工作。使用相同的curl命令格式(带有正确的密码和令牌),我现在收到以下消息: { "message": "必须指定双因素身份验证OTP代码。", "documentation_url": "https://developer.github.com/v3/auth#working-with-two-factor-authentication" } - user997225
@ramius,错误消息中的URL与我在答案中提供的链接相同。你能否编辑你的问题,澄清你到底做了什么来产生这个消息? - Chris
嗨,没问题,可以的。这个问题看起来是一样的。我稍后会看一下。 - user997225
是的,也不是 - 以这种方式手动创建远程仓库仍然无法工作(我直接在GitHub.com上创建了仓库),但我接受了答案,因为它指出了问题可能是什么 - 使用curl-H '{"X-GitHub-OTPOTP":$token}在头部发送OTP代码。 我存储的HTTP响应表明浏览器未正确形成请求,但正如您从上面的会话输出中看到的那样,我正在按照您建议的方式进行操作,参见此处 - user997225
@ramius,你的网络浏览器与此有什么关系?难道你不是在命令行上运行curl吗? - Chris
显示剩余4条评论

1
双因素认证
curl -u "YOUR_USERNAME_HERE" \
    -H "X-Github-OTP:YOUR_OTP_CODE_HERE" \
    https://api.github.com/user/repos
    -d '{"name": "test"}'

普通身份验证

curl -u "YOUR_USERNAME_HERE" \
    -H https://api.github.com/user/repos \
    -d '{"name":"Your repo name here"}'

欢迎来到SO。请在以后的回答中格式化您的答案。 - seshadri_c

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