कमांड लाइन विधि या प्रोग्रामेटिक रूप से ssh कुंजी को github.com उपयोगकर्ता खाते में जोड़ें


18

क्या github.com सर्वर के लिए एक उपयोगकर्ता नाम और पासवर्ड के साथ पहचान करने का एक तरीका है, जो github उपयोगकर्ता खाते में ssh कुंजी जोड़ने के उद्देश्य से है? अब तक मैंने जो कुछ पढ़ा है, वह बताता है कि उपयोगकर्ता की ssh कुंजी को वेब GUI के माध्यम से जोड़ा जाना चाहिए। मैं कमांड लाइन इंटरफेस के माध्यम से एक कुंजी जोड़ने की विधि या प्रक्रिया की तलाश कर रहा हूं या फिर एक bash / ansible / कुछ स्क्रिप्ट।


1
GitHub के API का उपयोग करने के लिए कुछ लाइब्रेरी का उपयोग करने के बारे में कैसे ?
sr_

जवाबों:


15

उपयोगकर्ता नाम और पासवर्ड github एपीआई द्वारा समर्थित है :

GitHub API v3 के माध्यम से प्रमाणित करने के तीन तरीके हैं। ...
मूल प्रमाणीकरण
$ कर्ल-यू "उपयोगकर्ता नाम" https://api.github.com
...

इसलिए जिस भाषा को आप पसंद करते हैं, उसमें एक लिब चुनें और एक सार्वजनिक कुंजी "सार्वजनिक कुंजी" एपीआई अनुभाग के कार्यान्वित संस्करण का उपयोग करें :

एक सार्वजनिक कुंजी बनाता है। आवश्यक है कि आपको कम से कम [लिखने: public_key] दायरे के साथ बेसिक ऑथेंटिक या OAuth के माध्यम से प्रमाणित किया जाए।

इनपुट
POST /user/keys

{
    "title": "octocat@octomac",
    "key": "ssh-rsa AAA..."
}

यदि आप कमांड लाइन (कर्ल के माध्यम से) का उपयोग करना चाहते हैं:

curl -u "username" --data '{"title":"test-key","key":"ssh-rsa AAA..."}' https://api.github.com/user/keys

या पासवर्ड के लिए संकेत दिए बिना भी:

curl -u "username:password" --data '{"title":"test-key","key":"ssh-rsa AAA..."}' https://api.github.com/user/keys

यहाँ github एपीआई के साथ बातचीत करने के लिए कर्ल का उपयोग करने के लिए एक अच्छा सा ट्यूटोरियल है


यह ठीक उसी तरह की जानकारी है जिसकी मुझे तलाश थी! आपका बहुत बहुत धन्यवाद!
cmosetick

7

Xx4h के उत्तर के समान, यह है कि मैं इसे नए VM सेटअपों को स्वचालित करने के लिए स्क्रिप्ट में कैसे करता हूं।

ssh-keygen -t rsa -b 4096 -C "myemailaddress@hotmail.com"
curl -u "myusername" \
    --data "{\"title\":\"DevVm_`date +%Y%m%d%H%M%S`\",\"key\":\"`cat ~/.ssh/id_rsa.pub`\"}" \
    https://api.github.com/user/keys

यह आपको एक नई SSH कुंजी प्रदान करता है, इसे कर्ल कॉल में शामिल करता है और GitHub पक्ष पर प्रत्येक के लिए एक अद्वितीय लेकिन फिर भी आसानी से पहचाने जाने योग्य नाम देता है (जैसे अब चल रहा है DevVm_150602142247)।


1
#!/bin/bash

set -xe
myemail="your-email"

#your personal access token
git_api_token="befdf14c152d6f2ad8cff9c5affffffffffffffffff"

#We'll use the HTTPS to push a ssh key to git, SSH for pull/push configuration
gitrepo_ssh="git@github.com:person/repo.git"
gitrepo_https="https://github.com/person/repo.git"

#Generating SSH key:
ssh-keygen -f "${HOME}/.ssh/id_rsa" -t rsa -b 4096 -C "${myemail}" -N ''
sslpub="$(cat ${HOME}/.ssh/id_rsa.pub |tail -1)"

#git API path for posting a new ssh-key:
git_api_addkey="https://api.$(echo ${gitrepo_https} |cut -d'/' -f3)/user/keys"

#lets name the ssh-key in get after the hostname with a timestamp:
git_ssl_keyname="$(hostname)_$(date +%d-%m-%Y)"

#Finally lets post this ssh key:
curl -H "Authorization: token ${git_api_token}" -H "Content-Type: application/json" -X POST -d "{\"title\":\"${git_ssl_keyname}\",\"key\":\"${sslpub}\"}" ${git_api_addkey}

0

एक अन्य विकल्प एपीआई टोकन का उपयोग करना है ... मैं हमारे आंतरिक गिटलैब सर्वर पर निम्नलिखित का उपयोग करता हूं

टुकड़ा:

#!/bin/bash

myemail="first.last@domain.com"

# User API token can be found: "https://git.labs.domain.com/profile/account"
git_api_token="m3iP27Jh8KSgNmWAksYp"

# We'll use the HTTPS to push a ssh key to git, SSH for pull/push configuration
gitrepo_ssh="git@git.labs.domain.com:devops/automation.git"
gitrepo_https="https://git.labs.domain.com/devops/automation.git"

########################]  D O   N O T   C H A N G E  [########################

# Generating SSH key:
ssh-keygen -f "${HOME}/.ssh/id_rsa" -t rsa -b 4096 -C "${myemail}" -N ''
sslpub="$(cat ${HOME}/.ssh/id_rsa.pub |tail -1)"

# git API path for posting a new ssh-key:
git_api_addkey="https://$(echo ${gitrepo_https} |cut -d'/' -f3)/api/v3/user/keys"

# lets name the ssh-key in get after the hostname with a timestamp:
git_ssl_keyname="$(hostname)-$(date +%Y%m%d%H%M%S)"

# Finally lets post this ssh key:
curl -H "PRIVATE-TOKEN: ${git_api_token}" -H "Content-Type: application/json" \
    -X POST -d "{\"title\":\"${git_ssl_keyname}\",\"key\":\"${sslpub}\"}"     \
    ${git_api_addkey}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.