Envie para o GitHub sem uma senha usando a tecla ssh

215

Gerei um par de chaves SSH sem senha e adicionei a chave pública ao GitHub.

Conexão com

user@dev:/var/www/project# ssh -T [email protected]
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

foi bem-sucedido e quando eu renomeio a chave, ela falha.

Mas quando quero enviar minhas alterações, ele ainda solicita minha combinação de nome de usuário e senha.

Existe uma maneira de enviar sem uma senha?

Sebus
fonte
9
Verifique se você não está usando https://github...em seus controles remotos. Eles também devem seguir o git@github...formato.
Cjc343

Respostas:

419

Se estiver solicitando um nome de usuário e senha, o controle remoto de origem estará apontando para o URL HTTPS, em vez do URL SSH.

Mude para ssh.

Por exemplo, um projeto do GitHub como o Git terá um URL HTTPS:

https://github.com/<Username>/<Project>.git

E o SSH:

[email protected]:<Username>/<Project>.git

Você pode fazer:

git remote set-url origin [email protected]:<Username>/<Project>.git

para alterar o URL.

manojlds
fonte
4
Isso resolveu o problema, mas continuo me perguntando por que o Github recomendaria que você apontasse o final remoto de um novo repositório para um URL http por padrão. Acabei de criar um repositório a partir do zero e me foi apresentada uma opção para definir um URL remoto https, não um git.
Preslav Rachev
2
Aqui está uma rápida comando shell de uma linha que vai mudar automaticamente o seu https url para o git apropriado (só funciona para urls github!):git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//[email protected]:/')
Christopher Shroba
11

Além disso, para gists, parece que você deve deixar de fora o nome de usuário

git remote set-url origin [email protected]:<Project code>
Gordon Wells
fonte
10

Caso você esteja realmente usando a URL SSH, mas ainda seja solicitado o nome de usuário e a senha ao pressionar git:

git remote set-url origin [email protected]:<Username>/<Project>.git

Você deve tentar solucionar problemas com:

ssh -vT [email protected]

Abaixo está um pedaço de amostra de saída:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

Na verdade, eu já adicionei a chave pública ao GitHub antes e também tenho a chave privada localmente. No entanto, minha chave privada tem um nome diferente chamado /c/Users/Yuci/.ssh/github_rsa.

De acordo com o exemplo de saída, o Git está tentando /c/Users/Yuci/.ssh/id_rsa, o que eu não tenho. Portanto, eu poderia simplesmente copiar github_rsapara id_rsao mesmo diretório.

cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa

Agora, quando corro ssh -vT [email protected]novamente, tenho:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...

E agora eu posso enviar para o GitHub sem ser solicitado o nome de usuário e a senha :-)

Yuci
fonte
5

Você precisa usar a versão SSH , não HTTPS . Ao clonar de um repositório, copie o link com a versão SSH , porque o SSH é fácil de usar e resolve todos os problemas de acesso. Você pode definir o acesso para cada SSH inserido na sua conta (como push, pull, clone, etc ...)

Aqui está um link, que diz por que precisamos do SSH e como usá-lo: passo a passo

Git gerar chaves SSH

Hazarapet Tunanyan
fonte
0

Como de costume, crie uma chave SSH e cole a chave pública no GitHub. Adicione a chave privada ao ssh-agent. (Presumo que foi isso que você fez.)

Para verificar se tudo está correto, use ssh -T [email protected]

Em seguida, não esqueça de modificar o ponto remoto da seguinte maneira:

git remote set-url origin [email protected]:username/your-repository.git
Seenivasan
fonte
-4

Usando a linha de comando:

Digite ls -al ~/.sshpara ver se as chaves SSH existentes estão presentes.

No terminal é mostrado: Nenhum diretório existe

Em seguida, gere uma nova chave SSH

Passo 1.

ssh-keygen -t rsa -b 4096 -C "[email protected]"

passo 2.

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>

etapa 3.

Enter passphrase (empty for no passphrase): [Type a password]

Enter same passphrase again: [Type password again]
Jitendra
fonte
Desculpe, esta questão não é sobre como criar as chaves, mas configurar o git para usar a chave em vez da autenticação #
7892