
¿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:
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):
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]