通过 curl 添加 SSH 密钥:无法生成指纹
Adding SSH-key through curl: Fingerprint cannot be generated
我正在编写一个 bash 脚本,它将向内部 Gitlab 服务器添加一个 SSH-key
。下面是代码:
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"
]
}
}
但是当我通过网络浏览器手动插入相同的密钥时,一切正常...
那我做错了什么?我错过了一个选项吗?
您的 SSH 公钥中的空格似乎没有正确转义。 POST DATA 字符串中不能使用某些字符,包括空格。
尝试使用 curl --data-urlencode
而不是 curl --data
来自动编码 POST 数据。
OP在这里
与此同时,我已将服务器更新到 8.8 版并稍微更改了 curl
代码,现在它运行得很好:
curl -X POST -F "private_token=${userToken}" -F "title=${sshName}" -F "key=${sshKey}" "${gitServer}/user/keys"
以防万一以后有人需要这个...
我正在编写一个 bash 脚本,它将向内部 Gitlab 服务器添加一个 SSH-key
。下面是代码:
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"
]
}
}
但是当我通过网络浏览器手动插入相同的密钥时,一切正常...
那我做错了什么?我错过了一个选项吗?
您的 SSH 公钥中的空格似乎没有正确转义。 POST DATA 字符串中不能使用某些字符,包括空格。
尝试使用 curl --data-urlencode
而不是 curl --data
来自动编码 POST 数据。
OP在这里
与此同时,我已将服务器更新到 8.8 版并稍微更改了 curl
代码,现在它运行得很好:
curl -X POST -F "private_token=${userToken}" -F "title=${sshName}" -F "key=${sshKey}" "${gitServer}/user/keys"
以防万一以后有人需要这个...