错误尝试从bash脚本将ssh键推入github时

时间:2017-09-18 23:32:35

标签: linux bash github ssh terminal

我正在创建一个创建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” }

1 个答案:

答案 0 :(得分:2)

您在命令中输入了太多引号。正确的代码(第一次近似)将是

curl --user "${USERNAME}" -X POST \
     --data "{ \"title\": \"$TITLE\", \"key\": \"$KEY\" }" \
     https://api.github.com/user/keys

但是,如果TITLEKEY包含需要转义以包含在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