Se você estiver usando SSH e sua chave privada estiver criptografada com uma senha, você ainda será solicitado a digitar a senha / senha da chave privada ao realizar operações de rede com o Gitpush
, como pull
, e fetch
.
Use ssh-agent para salvar as credenciais de senha / senha da chave privada
Se você quiser evitar ter que digitar sua senha sempre, use ssh-agent
as suas credenciais de senha de chave privada uma vez por sessão do terminal, como explico em minha resposta para Não foi possível abrir uma conexão com o seu agente de autenticação :
$ eval `ssh-agent -s`
$ ssh-add
Em um msysgit Bash do Windows, você precisa avaliar a saída de ssh-agent
, mas não tenho certeza se você precisa fazer o mesmo em outros ambientes de desenvolvimento e sistemas operacionais.
ssh-add
procura uma chave privada na sua .ssh
pasta pessoal chamadaid_rsa
, que é o nome padrão, mas você pode passar um caminho de arquivo para uma chave com um nome diferente.
Matando o agente
Quando você terminar sua sessão de terminal, poderá encerrar ssh-agent
com a bandeira de interrupção -k
:
$ ssh-agent -k
Conforme explicado no ssh-agent
manual :
-k
Mate o agente atual (fornecido pela variável de ambiente SSH_AGENT_PID).
Tempo limite opcional
Além disso, pode levar um parâmetro de tempo limite opcional, da seguinte maneira:
$ ssh-add -t <timeout>
onde <timeout>
está no formato <n>h
por <n>
horas, <n>m
por<n>
minutos, e assim por diante.
De acordo com o ssh-agent
manual :
-t life
Defina um valor padrão para a vida útil máxima de identidades adicionadas ao agente. A vida útil pode ser especificada em segundos ou em um formato de hora especificado em sshd_config (5) . Uma vida útil especificada para uma identidade com ssh-add (1) substitui esse valor. Sem essa opção, a vida útil máxima padrão é para sempre.
Veja esta página para mais formatos de hora .
Aviso de segurança para usuários do Cygwin
Os usuários do Cygwin devem estar cientes de um risco potencial à segurança ao usar o ssh-agent no Cygwin :
as pessoas devem estar cientes dos perigos potenciais do ssh-agent no Cygwin 1 , embora sob um netstat local e portscan remoto, não parece que a porta especificada em / tmp / ssh-foo esteja acessível a qualquer pessoa ...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
E no link citado :
no entanto, observe que os soquetes de domínio Unix da Cygwin são FUNDAMENTALMENTE INSEGUROS e, portanto, DESCOUÇO fortemente o uso do ssh-agent no Cygwin.
quando você executa o ssh-agent no Cygwin, ele cria o soquete AF_UNIX no /tmp/ssh-$USERNAME/
diretório No Cygwin, os soquetes AF_UNIX são emulados pelos soquetes AF_INET. Você pode ver facilmente isso se procurar no /tmp/ssh-$USERNAME/agent-socket-*
arquivo via Bloco de Notas. Você verá algo como
!<socket >2080
então corra netstat -a
e surpreenda! Você tem algum programa ouvindo a porta 2080. É ssh-agent. Quando o ssh recebe um desafio de RSA do servidor, ele se refere à correspondência /tmp/ssh-$USERNAME/agent-socket-*
(no Cygwin, no nosso caso, isso significa que ele abrirá a conexão comlocalhost:2080
) e solicita ao ssh-agent que processe o desafio de RSA com a chave privada que possui e, em seguida, simplesmente passa a resposta recebida do agente ssh para o servidor.
No Unix, esse cenário funciona sem problemas, porque o kernel do Unix verifica as permissões quando o programa tenta acessar um soquete AF_UNIX. Para soquetes AF_INET, no entanto, as conexões são anônimas (leia-se "inseguro"). Imagine que você tem o agente ssh Cygwin em execução. Um hacker mal-intencionado pode portar a sua caixa, localizar a porta aberta usada pelo ssh-agent, abrir uma conexão com o servidor SSH, receber o desafio RSA dele, enviá-lo ao seu ssh-agent por uma porta aberta que ele encontrou, receber o Resposta RSA, envie-a para o servidor SSH e pronto, ele / ela logou com sucesso no seu servidor como você.