我正在创建一个创建ssh密钥并使用bash将它们放入github的脚本。我在运行这个函数时遇到了这个错误..我想要一种方法来生成ssh密钥并将它们放入我脚本中的终端的github中。
sudo ssh-keygen -t rsa
KEY=$(sudo cat ~/.ssh/id_rsa.pub)
echo "Here is your KEY var: ${KEY}"
read -p "GitHub Username: " USERNAME
read -p "Please enter a title for you ssh key: " TITLE
curl --user "\"${USERNAME}"\" -X POST --data '{ "\"title"\": "\"$TITLE"\", "\"key"\": "\"$KEY"\" }' https://api.github.com/user/keys
错误:{ “消息”:“凭证不好”, “documentation_url”:“https://developer.github.com/v3” }
答案 0 :(得分:2)
您在命令中输入了太多引号。正确的代码(第一次近似)将是
curl --user "${USERNAME}" -X POST \
--data "{ \"title\": \"$TITLE\", \"key\": \"$KEY\" }" \
https://api.github.com/user/keys
但是,如果TITLE
或KEY
包含需要转义以包含在JSON中的字符,则很容易失败。正确的方法是使用jq
之类的工具生成JSON,它可以处理任何必要的转义。
curl --user "${USERNAME}" -X POST \
--data "$(jq -n --arg t "$TITLE" --arg k "$KEY" \
'{title: $t, key: $k}')" \
https://api.github.com/user/keys
或
jq -n --arg t "$TITLE" --arg k "$KEY" '{title: $t, key: $k}' |
curl --user "$USERNAME" -X POST --data @- https://api.github.com/user/keys