我正在尝试将我的公共 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"
}
这对于Windows用户来说,有两点需要考虑
- 您的控制台应该以正确的顺序解析引号和双引号。
- curl 需要引用 JSON 属性和键。
那么我们该如何调试呢:
- 将“-v --trace-ascii -”添加到curl命令中以查看命令日志。
- 在 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 数据非常重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)