O Linux pode memoriza todas as senhas utilizadas no SSH
até que o usuário faça logoff ou reinicie o computador.
As senhas ficam salvas no sistema de credenciais nativo do Linux.
O Windows não possui este recurso, sendo necessário alguns passos para conseguir o mesmo efeito.
O cygwin ou o gitbash, possuem um recurso chamado ssh-agent
que é iniciado ao fazer uma chamada ao comando ssh
.
O que vamos fazer é iniciar um único ssh-agent
que ficará rodando até que o usuário faça logoff ou reinicie o computador.
Habilitar a pasta bin na home do usuário
Para armazenarmos os arquivos na pasta do próprio usuário, descomente as seguintes linhas:
$ vim ~/.bash_profile
1 | # Set PATH so it includes user's private bin if it exists |
Criar script customizado para usar o SSH sem senha
Nós vamos “enganar” o sistema criando um arquivo com o nome de ssh
que fará toda a mágica:
$ vim ~/bin/ssh
1 |
|
O que o nosso script faz é bem simples:
Na linha 3 ele verifica se existe um arquivo do ssh-agent
criado e o executa, na linha 4, para carregar suas variáveis na memória.
Na linha 7 é feita uma verificação para garantir que os dados armazenados são realmente do agente que está rodando.
Caso não seja, as linhas 8 e 9 iniciam um novo agente e armazenam seus dados no arquivo.
A linha 10 inicia o processo que vai soliciar a senha e armazenar no agente para utilização futura.
O legal desse script é que só será solicitado a senha na primeira vez que o comando ssh
for utilizado.
Encontrei outros scripts que solicitavam a senha da private.key mesmo que o ssh
não fosse utilizado.
O agente também não será iniciado antes do comando ssh
ser chamado.
Na linha 13 vamos chamar o verdadeiro SSH
do sistema passando todos os parametros.