Befehlszeilenmethode oder programmgesteuertes Hinzufügen eines SSH-Schlüssels zum github.com-Benutzerkonto

Befehlszeilenmethode oder programmgesteuertes Hinzufügen eines SSH-Schlüssels zum github.com-Benutzerkonto

Gibt es eine Möglichkeit, sich mit einem Benutzernamen und einem Passwort bei github.com-Servern zu identifizieren, um dem Github-Benutzerkonto einen SSH-Schlüssel hinzuzufügen? Alles, was ich bisher gelesen habe, deutet darauf hin, dass der SSH-Schlüssel eines Benutzers über die Web-GUI hinzugefügt werden muss. Ich suche nach der Methode oder dem Prozess zum Hinzufügen eines Schlüssels über eine Befehlszeilenschnittstelle oder ein Bash-/Ansible-/irgendwas-Skript.

Antwort1

Aktualisierung 2020

Wie angegeben inEntwickleränderungen, Die Kennwortauthentifizierung wird abgeschafft ab:

13. November 2020 um 16:00 Uhr UTC

Darüber hinaus benötigen wir, wie @trysis in den Kommentaren fragte, eine Lösung für 2FA.

Die neue Methode besteht in der Verwendung einesPersönlicher Zugriffstoken: Bildbeschreibung hier eingeben

Für unser konkretes Beispiel (Hinzufügen eines SSH-Schlüssels) benötigen wir nur Schreibrechte (Leserechte werden bei Verwendung von Schreibrechten automatisch hinzugefügt): Bildbeschreibung hier eingeben

Der aktualisierte Befehl (über curl):

curl -H "Authorization: token YourGeneratedToken" --data '{"title":"test-key","key":"ssh-rsa AAA..."}' https://api.github.com/user/keys

Dies funktioniert auch, wenn 2FA aktiviert ist.


ALT

Authentifizierung mit Benutzername und Passwort istunterstützt durch GitHub API:

Es gibt drei Möglichkeiten zur Authentifizierung über GitHub API v3. ...
Einfache Authentifizierung
$ curl -u "Benutzername"https://api.github.com
...

Also nurwähle eine Bibliothekin der von Ihnen bevorzugten Sprache und verwenden Sie die implementierte Version derErstellen eines öffentlichen SchlüsselsAPI-Bereich „Öffentlicher Schlüssel“:

Erstellt einen öffentlichen Schlüssel. Erfordert, dass Sie über Basic Auth oder OAuth mit mindestens dem Umfang [write:public_key] authentifiziert sind.

EINGANG
POST /user/keys

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

Wenn Sie es über die Befehlszeile verwenden möchten (über Curl):

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

oder sogar ohne Passwortabfrage:

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

hier ist ein nettes kleines Tutorial fürVerwenden von Curl zur Interaktion mit der GitHub-API

Antwort2

Ähnlich wie die Antwort von xx4h mache ich es in Skripten zur Automatisierung neuer VM-Setups.

ssh-keygen -t rsa -b 4096 -C "[email protected]"
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

Sie erhalten einen neuen SSH-Schlüssel, der in den Curl-Aufruf aufgenommen wird, und für jeden Schlüssel auf der GitHub-Seite wird ein eindeutiger, aber dennoch leicht identifizierbarer Name vergeben (die aktuelle Ausführung würde beispielsweise DevVm_150602142247 ergeben).

Antwort3

#!/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="[email protected]: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}

Antwort4

Mit dem neuenGitHub CLI gh, du hastgh auth login+ gh ssh add

Fügen Sie Ihrem GitHub-Konto einen SSH-Schlüssel hinzu

gh ssh-key add [<key-file>] [flags]

verwandte Informationen