método de línea de comando o agregar mediante programación la clave ssh a la cuenta de usuario de github.com

método de línea de comando o agregar mediante programación la clave ssh a la cuenta de usuario de github.com

¿Hay alguna manera de identificarse con un nombre de usuario y contraseña en los servidores de github.com con el fin de agregar una clave ssh a la cuenta de usuario de github? Hasta ahora, todo lo que he leído sugiere que la clave ssh de un usuario debe agregarse a través de la GUI web. Estoy buscando el método o proceso para agregar una clave a través de una interfaz de línea de comando o un script bash/ansible/algo.

Respuesta1

Actualización 2020

Como se indica encambios de desarrollador, La autenticación de contraseña quedará obsoleta en:

13 de noviembre de 2020 a las 16:00 UTC

Además, como preguntó @trysis en los comentarios, necesitamos una solución para 2FA.

La nueva forma es utilizar untoken de acceso personal: ingrese la descripción de la imagen aquí

Para nuestro ejemplo específico (agregar una clave ssh), solo necesitamos permisos de escritura (los permisos de lectura se agregan automáticamente al usar permisos de escritura): ingrese la descripción de la imagen aquí

El comando actualizado (a través de curl):

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

Esto también funciona cuando 2FA está habilitado.


VIEJO

La autenticación con nombre de usuario y contraseña esapoyado por la API de github:

Hay tres formas de autenticarse a través de la API de GitHub v3. ...
Autenticación básica
$ curl -u "nombre de usuario"https://api.github.com
...

Por lo que sóloelige una bibliotecaen el idioma que prefieras y utiliza la versión implementada delCrear una clave públicaSección API "Clave pública":

Crea una clave pública. Requiere que esté autenticado mediante autenticación básica u OAuth con al menos un alcance de [write:public_key].

APORTE
POST /user/keys

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

Si desea usarlo desde la línea de comando (a través de curl):

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

o incluso sin pedir contraseña:

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

aquí hay un pequeño y agradable tutorial parausando curl para interactuar con la API de github

Respuesta2

De manera similar a la respuesta de xx4h, así es como lo hago en scripts para automatizar nuevas configuraciones de VM.

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

Le brinda una nueva clave SSH, la incluye en la llamada curl y le brinda un nombre único pero aún fácilmente identificable para cada uno en el lado de GitHub (por ejemplo, ejecutar ahora daría DevVm_150602142247).

Respuesta3

#!/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}

Respuesta4

con el nuevoCLI de GitHub, tienesgh auth login+ gh ssh add

Agregue una clave SSH a su cuenta de GitHub

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

información relacionada