【问题标题】:Can't send SSH key to Github with cURL无法使用 cURL 将 SSH 密钥发送到 Github
【发布时间】:2021-04-03 12:46:01
【问题描述】:

我正在尝试将我的公共 ssh 密钥发送到 Github。我将密钥设置为 shell 中的一个变量,但它给出了 key is invalid. You must supply a key in OpenSSH public key format 错误。我有发送密钥的身份验证,但它不起作用。

带有➜ ~ 星号的行是命令,其余的是输出。

➜  ~ key=$(cat .ssh/id_0001.pub)
➜  ~ echo $key 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDCk9BFg0PyDeOn186G+gx16KjeYPekGlPppNcg1shjqzVSppNJHXy08GqBNgxN14TU3UzQyRej6BjSi0YGlWVZAz1tDedaFsauwCYYRIO9Aej7HJcmU9V8Sv9npWBGjQZTS/KYRg790xo8zueoCzCXR+Sufxy6yn5xee+e938nkdY0O+/Lxv/3Ks6IQpvJlCOYdvvUC1liIQWd2nxc9T3vtjWtslG5/Yq4PzBT4ja5A0xMNerCrIXf7e7m+DtV2jIESYCwYMBOAioRdSDHIGHL4YOoikYeebUFe1ajTalZYEmsFW/0yu6GEhvoe9FP1IhPIN5nPI6h3EJWDDEpOOI6IdG4Ex5Slzg+TRYG6CoUhRb1d/iQrcSzdibP450GrqxaSMZicmOEj/7w6SvItd1qJ+my3W1RZmGhRQ8CaXMpZvJERFdS2tAmO42r3IC24Xe7ZU+vvlxgS+H7F19kAWWhL8Q8OGFmC9Zs5gkci/jxG6f7Wlnd35UHJ9VreCQl/t0= archie@PC 
➜  ~ curl -H "Authorization: token 90********************" --data '{"title":"test-key","key":"${key[@]}"}' https://api.github.com/user/keys 
{ 
  "message": "Validation Failed", 
  "errors": [ 
    { 
      "resource": "PublicKey", 
      "code": "custom", 
      "field": "key", 
      "message": "key is invalid. You must supply a key in OpenSSH public key format" 
    } 
  ], 
  "documentation_url": "https://docs.github.com/rest/reference/users#create-a-public-ssh-key-for-the-authenticated-user" 
} 

【问题讨论】:

    标签: github ssh key


    【解决方案1】:

    这是针对 Windows 用户的,有两点需要考虑

    1. 您的控制台应该以正确的顺序解析引号和双引号。
    2. curl 需要 JSON 属性和键的引用。

    那么我们如何调试它:

    • 在 curl 命令中添加“-v --trace-ascii -”以查看命令日志。
    • 在 cmd 或 PowerShell 中为您的数据使用 echo 或 write-host

    Windows PowerShell 示例

    $publicKey =Get-Content -Path "$HOME\.ssh\github.pub" 
    
    $data='{""title"":""script"",""key"":""' + $publicKey + '""}'
    
    curl -X POST -H "Accept: application/vnd.github.v3+json" -H "Authorization: token $userToken"  https://api.github.com/user/keys  -d $data -v --trace-ascii -
    

    确保 curl 接收到有效的 JSON 数据非常重要。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。我认为您没有正确生成新的 SSH 密钥。输入ssh-keygen -t rsa -C "your email@163.com" 后,您将在后面看到。您应该使用clip < ~/.ssh/id_rsa.pub 复制密钥。

      【讨论】:

        猜你喜欢
        • 2019-05-21
        • 1970-01-01
        • 2022-01-14
        • 2013-05-16
        • 2014-05-14
        • 2012-02-02
        • 2013-01-23
        • 1970-01-01
        相关资源
        最近更新 更多