【问题标题】:How to use ssh authentication with github API?如何通过 github API 使用 ssh 身份验证?
【发布时间】:2013-02-09 06:32:11
【问题描述】:

在通过命令行访问 GitHub API 时,是否有某种方法可以使用基于 ssh 的身份验证(例如,通过 curl 等?)。

FWIW,我尝试了以下多种变体(改变了我指定公共 ssh 密钥文件的方式),但在每种情况下,我仍然被提示输入密码:

% curl --pubkey ~/.ssh/id_rsa.pub --user yrstruly https://api.github.com/user/repos

【问题讨论】:

    标签: curl github ssh github-api


    【解决方案1】:

    如果您使用 ssh,那么您永远不会以“yrstruly”身份登录。您将始终以“git”的身份连接。
    您的公钥足以让 GitHub 将您识别为“yrstruly”。
    而且由于您使用的是 https 地址,而不是 ssh 地址,因此--pubkey 选项很可能会被忽略。

    一个有效的 ssh 地址应该是:ssh://git@api.github.com,我不认为 Github 建议对其 api 进行这种访问。

    curl --user option 仅适用于 https 地址,如“Having trouble downloading Git archive tarballs from Private Repo”:

    curl -sL --user "${username}:${password}" https://github.com...
    

    【讨论】:

    • 关于您的最后一点,GitHub API 中有大量命令可以修改存储库,并且显然需要进行身份验证。此外,除了身份验证之外,如果没有-u 参数,这些命令中的至少一些可能无法工作,因为它们会模棱两可。例如。如果未指定 -u 参数,curl -u yrstruly -d '{"name":"newrepo"}' https://api.github.com/user/repos 将在哪里创建新的仓库“newrepo”?
    • @kjo 我同意,-u 是必要的,这是我在回答中使用的(带有用户名和密码)。但是,我不会使用任何 pubkey,因为这里不涉及 ssh。
    • @VonC 2018年还是这样吗?可以创建 ssh 的部署密钥,并且可能打算与 API 一起使用,但我不知道如何
    • @MarkAdamson 你试过curl -u git: --key ~/.ssh/yourKey ...吗?但是,是的,GitHub 无法从外部访问 ssh。
    • @VonC 阅读更多内容我意识到 Deploy Keys 不提供对 GitHub API 的访问权限,它们只是用于处理本机 Git 操作
    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 2013-08-03
    • 2021-03-01
    • 1970-01-01
    • 2013-08-18
    • 2015-04-16
    • 2020-12-02
    相关资源
    最近更新 更多