通过 curl 添加 SSH-key:无法生成指纹
Posted
技术标签:
【中文标题】通过 curl 添加 SSH-key:无法生成指纹【英文标题】:Adding SSH-key through curl: Fingerprint cannot be generated 【发布时间】:2015-11-07 12:26:55 【问题描述】:我正在编写一个 bash 脚本,它会将 SSH-key
添加到内部 Gitlab 服务器。下面是代码:
userToken=$(curl http://gitserver/api/v3/session --data 'login=*****&password=****' | jq '.private_token')
userToken=$(echo "$userToken" | tr -d '"')
# Below key is for testing, will use output of cat ~/.ssh/id_rsa.pub later on
sshKey="ssh-rsa AA*********L ****@***com"
curl --data "private_token=$userToken&title=keyName&key=$sshKey" "http://gitserver/api/v3/user/keys"
但我得到了这样的回应:
"message":
"fingerprint": [
"cannot be generated"
]
但是当我通过网络浏览器手动插入相同的密钥时,一切正常...
那我做错了什么?我错过了一个选项吗?
【问题讨论】:
小问题:curl/GitLab 可以处理帖子字符串中的空格,还是您需要对您的 POST 数据进行 url 编码?您可以尝试使用curl --data-urlencode
而不是curl --data
。
@ErikE.Lorenz 看起来这可能是问题所在并修复!唯一的问题...我从项目中被带走了。但是我把这个信息传递给了负责人(虽然他没有时间尝试)。但是由于这看起来可以解决问题,您可以创建一个官方答案,以便我接受它。
jxqc.wordpress.com/2014/09/01/…
【参考方案1】:
您的 SSH 公钥中的空格似乎没有正确转义。 POST DATA 字符串中不能使用某些字符,包括空格。
尝试使用curl --data-urlencode
代替curl --data
来自动编码POST 数据。
【讨论】:
【参考方案2】:在这里操作
与此同时,我已将服务器更新到 8.8 版,并稍微更改了 curl
代码,现在它的工作就像一个魅力:
curl -X POST -F "private_token=$userToken" -F "title=$sshName" -F "key=$sshKey" "$gitServer/user/keys"
以防万一将来有人需要这个......
【讨论】:
以上是关于通过 curl 添加 SSH-key:无法生成指纹的主要内容,如果未能解决你的问题,请参考以下文章