
Existe uma maneira de se identificar com um nome de usuário e senha nos servidores do github.com com a finalidade de adicionar uma chave ssh à conta de usuário do github? Até agora, tudo que li sugere que a chave ssh de um usuário deve ser adicionada por meio da GUI da web. Estou procurando o método ou processo de adição de uma chave por meio de uma interface de linha de comando ou então de um script bash/ansible/something.
Responder1
Atualização 2020
Como afirmado emmudanças do desenvolvedor, a autenticação por senha será descontinuada em:
13 de novembro de 2020 às 16h UTC
Além disso, como @trysis perguntou nos comentários, precisamos de uma solução para 2FA.
A nova maneira é usar umtoken de acesso pessoal:
Para nosso exemplo específico (adicionando uma chave ssh), precisamos apenas de permissões de gravação (as permissões de leitura são adicionadas automaticamente ao usar permissões de gravação):
O comando atualizado (via curl):
curl -H "Authorization: token YourGeneratedToken" --data '{"title":"test-key","key":"ssh-rsa AAA..."}' https://api.github.com/user/keys
Isso também funciona quando o 2FA está ativado.
VELHO
Autenticação com nome de usuário e senha ésuportado pela API do github:
Existem três maneiras de autenticar por meio da API GitHub v3. ...
Autenticação básica
$ curl -u "nome de usuário"https://api.github.com
...
Então apenasescolha uma bibliotecano idioma de sua preferência e use a versão implementada doCrie uma chave públicaSeção da API "Chave Pública":
Cria uma chave pública. Requer que você seja autenticado via Basic Auth ou OAuth com pelo menos [write:public_key] escopo.
ENTRADA
POST /user/keys
{
"title": "octocat@octomac",
"key": "ssh-rsa AAA..."
}
Se você quiser usá-lo na linha de comando (via curl):
curl -u "username" --data '{"title":"test-key","key":"ssh-rsa AAA..."}' https://api.github.com/user/keys
ou mesmo sem solicitar senha:
curl -u "username:password" --data '{"title":"test-key","key":"ssh-rsa AAA..."}' https://api.github.com/user/keys
aqui está um pequeno tutorial legal parausando curl para interagir com a API do github
Responder2
Semelhante à resposta de xx4h, é assim que faço isso em scripts para automatizar novas configurações 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
Ele fornece uma nova chave SSH, inclui-a na chamada curl e fornece um nome exclusivo, mas ainda facilmente identificável, para cada um no lado do GitHub (por exemplo, executar agora daria DevVm_150602142247).
Responder3
#!/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}
Responder4
Com o novoCLI do GitHub, você temgh auth login
+ gh ssh add
Adicione uma chave SSH à sua conta GitHub
gh ssh-key add [<key-file>] [flags]