簡體   English   中英

嘗試從bash腳本將ssh鍵推入github時出錯

[英]Error When trying to push ssh keys into github from bash script

我正在研究一個腳本,該腳本創建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 ”}

您在命令中添加了過多的引號。 正確的代碼(大致近似)為

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM