Como posso executar um `git pull` sem digitar novamente minha senha SSH?

96

É possível configurar git/sshpara não ter que inserir minha senha toda vez que quiser executar um git pull? Observe que o repo é privado no github.

Ou, alternativamente, qual seria a prática recomendada para automatizar a implantação de código de um repositório Github privado?

Detalhes adicionais: instância EC2 executando uma AMI pública baseada no Fedora.

jldupont
fonte
2
possível duplicata de Configurando Git sobre SSH
meagar
Você tem solução para este problema?
nim
A partir do git 2.11+ (Q4 2016), usar libsecret é outra maneira: stackoverflow.com/a/40312117/8477066
Hielke Walinga

Respostas:

69

Dê uma olhada neste link https://help.github.com/articles/working-with-ssh-key-passphrases/

Mas não quero inserir uma frase secreta longa sempre que uso a chave!

Nem eu! Felizmente, há uma pequena ferramenta bacana chamada ssh-agentque pode salvar sua frase-senha com segurança para que você não tenha que digitá-la novamente. Se você estiver no OSX Leopard ou posterior, suas chaves podem ser salvas nas chaves do sistema para tornar sua vida ainda mais fácil. A maioria das instalações do Linux iniciará automaticamente o ssh-agent para você quando você fizer login.

Fredrik Pihl
fonte
3
um pouco nervoso ao responder a alguém com reputação de 17,7 mil; interpretei mal a pergunta ... ;-)
Fredrik Pihl
3
nervoso? tenha certeza: a grande maioria das pessoas aqui são muito bem educadas ... e aqueles que não são, bem, eles têm problemas maiores do que eu :)
jldupont
2
Este link foi útil para explicar quais comandos executar para que sua senha seja salva em ssh-agent: rabexc.org/posts/using-ssh-agent
Mateus Gondim
Eu não quero usar as chaves. Simples, tenho user \ pass e quero salvá-lo no lado do cliente git
nim
Por que o link fornece apenas opções de Mac / Widows? Eu quero fazer pull no servidor unix sem entrar novamente na passagem. consegui fazer funcionar para um projeto histórico, mas não posso dizer o que fiz lá. É o ponto que quando você ssh para uma máquina Unix remota, a chave é passada e usada como uma chave git pull (ou private composer vcs)? Eu acredito que estou entendendo mal alguma coisa aqui. Qualquer ajuda será apreciada :)
trainoasis
29

Eu habilitei o cache de senha conforme descrito aqui:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Para armazenar a senha em cache por um mês:

git config --global credential.helper 'cache --timeout=2628000'
Sileria
fonte
Obrigado, temuri- Estive procurando em todos os lugares por esse detalhe exato. Não estava funcionando, mas a documentação aparentemente não menciona que é apenas para HTTPS.
Mike Emery
2
Se você usar uma senha ( não uma frase secreta com arquivo de chave) para uma URL baseada em SSH de um repositório Git remoto, não será possível salvar a senha. Mas percebi que depois de emitir qualquer comando git, você pode digitar imediatamente a senha e pressionar Enter . Você não precisa esperar que o prompt de senha apareça.
ADTC
1
git still ask pass
nim
12

Experimente isto:

git config credential.helper store

Você terá que inserir sua senha uma vez, depois disso, ela será armazenada em uma pasta dentro do root.

Como os comentários apontaram, isso NÃO funciona para senhas SSH, apenas para senhas HTTPS.

ianque
fonte
1
@nim Isso não significa que você deva votar contra a resposta, sugeri o que funcionou para mim e alguém pode achar útil.
Yankee de
Não é uma senha salva. Eu tento e nada resulta. Se você remotamente como este ssh: // name @ ip / path
nim
1
Isso funciona se você deseja armazenar a senha de autenticação básica HTTP.
Phil
4
Isso NÃO funciona para senhas SSH, apenas para senhas HTTPS.
Eliezer Berlin
funciona bem para https. Você só precisa digitar isso. A próxima vez deve ser a última vez que você precisa inserir a paráfrase. Na próxima vez, a senha deve ser lembrada pelo git.
Jonathan
7

Sua situação foi corrigida, mas para mim era o fato de eu ter mais de uma chave ~/.ssh/

Para resolver o problema tive que criar um arquivo chamado ~/.ssh/confige adicionar a linha:

IdentityFile ~/.ssh/my_key2_rsa

onde ~/.ssh/my_key2_rsaestá minha chave.

Mogsdad
fonte
1
Obrigado por isso, meus arquivos id_rsa e id_rsa.pubtêm um nome personalizado, por isso o git nunca o reconheceria. ref: linux.die.net/man/5/ssh_config
lasec0203
5

Não sei por que ninguém relatou isso ainda. Mas a abordagem mais simples seria simplesmente adicionar uma única linha AddKeysToAgent yesno topo do arquivo .ssh / config. Claro, ssh-agentdeve ser executado com antecedência. Se não estiver funcionando (verifique pelo comando ssh-agentno terminal), basta executá-loeval $(ssh-agent)

Posso confirmar que isso funciona, porque no meu projeto com muitos submódulos e para cada submódulo sendo clonado, eu tive que digitar minha senha ssh. Depois do truque acima, não preciso mais fazer isso.

A fonte da solução é /ubuntu/362280/enter-ssh-passphrase-once/853578#853578

infoclogged
fonte
Esta é a resposta absolutamente correta. Além disso, para ter o ssh-agent em execução, é possível usar um serviço de usuário do systemd
someonewithpc