Estou usando o git bash e configuro a chave ssh usando ssh-keygen e cada vez que faço algo com um repositório git me pede a senha para /c/Users/jankiewj/.ssh/id_rsa
. Existe uma maneira de desativar essa senha.
EDITAR: Eu editei o título original (removi o Windows) desde que acabei de usar a nova instalação do Ubuntu no meu laptop de trabalho e quando a chave ssh tem uma senha, ele sempre pede e a solução para corrigir isso é a mesma. Provavelmente funciona da mesma forma no MacOSX que também é Unix e usa as mesmas ferramentas básicas.
Responder1
Você pode executar isso no git bash, Windows WLS ou bash no GNU/Linux real.
eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa
ele solicitará a senha no segundo comando e pronto. Cada ação adicional que você precisará realizar (que antes exigia uma frase secreta) não solicitará a frase secreta (veja um exemplo na captura de tela abaixo):
Responder2
Um pouco melhor esolução permanenteé iniciar automaticamente o agente ssh ao abrir o git bash no Windows. Você pode copiar/colar o texto abaixo em seu .profile ou .bashrc. prefiro colocar no.perfil
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
Esta solução foi tomadadeste artigo de ajuda do github
Responder3
TDLR: Para usuários do Windows,
- correr
ssh-add "C:\\Users\\<your user>/.ssh/id_rsa"
- não
ssh-add ~/.ssh/id_rsa
Por exemplo, vejo isso o tempo todo:
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /c/Users/User/.ssh/id_rsa:
Identity added: /c/Users/User/.ssh/id_rsa (/c/Users/User/.ssh/id_rsa)
$ git pull
Enter passphrase for key 'C:\Users\User/.ssh/id_rsa':
Observe os separadores de caminho inconsistentes: o agente ssh converte ~ usando separadores de caminho Unix, mas o git usa separadores de caminho do Windows. Dado que o caminho do id_rsa
arquivo é usado como chave, isso explica porque o cache foi perdido.
- Outra diferença é que
C:/
em vez de/c/
- Observação relacionada: Quando o git solicitar a senha, ela não será armazenada em cache, portanto você poderá inseri-la lá indefinidamente. Tente passar a frase para
ssh-add
only. - No Windows, suponha que
~
seja "multivalorado", por isso é melhor ser explícito. ssh-add
analisa locais padrão como~/.ssh/id_rsa
. No Windows, suponha que isso seja ambíguo. Passe explicitamente o caminho formatado explicitamente em vez de confiar nos caminhos padrão:ssh-add "C:\\Users\\<your user>/.ssh/id_rsa"
, ou seja, na resposta do @velval também.
Responder4
Chaveiroé um programa para fazer esse trabalho de forma inteligente.
Ele deve ser executado a partir do .bashrc (ou equivalente) e configurará o ambiente corretamente, sem nenhuma configuração além das chaves que deve carregar.
Isto é o que eu uso:keychain --quiet key1.pem key2.pem
Ele percebe que o shell é Zsh e funcionou exatamente da mesma forma quando usei o Bash.