Instalei o openSSH como parte da distribuição cygwin mais recente. Meu objetivo é usar o agente ssh do console da janela nativa (cmd) para fazer login sem senha em várias máquinas Linux.
Eu gerei as chaves e as carreguei nos diretórios apropriados nos hosts remotos e tudo funciona bem.
O único problema que tenho é que toda vez que abro um novo cmd, tenho que executar 'ssh-add', inserir a senha e então posso fazer login sem senha nos hosts remotos. Existe uma maneira de superar esse problema? A solução ideal seria executar o ssh-add apenas uma vez.
para sua informação: estou abrindo o cmd como um argumento para o ssh-agent: 'ssh-agent cmd'
Responder1
Na verdade, criei uma ferramenta chamada "ssh-agent-helper" que a invoca ssh-agent
e a disponibiliza globalmente, para que você possa usar ssh-add
, ssh
ou git
de qualquer terminal, por exemplo, CMD, Bash, PowerShell etc., sem qualquer configuração.
Você pode encontrá-lo aqui:https://github.com/raeesbhatti/ssh-agent-helper
Responder2
Você não poderá executar o ssh na janela de comando nativa. Você precisará executar a "janela" bash do Cygwin para executar qualquer um dos binários do Cygwin.
Dito isto, nas "janelas" do Cygwin bash, você precisa salvar a saída do ssh-agent em um arquivo e, em seguida, inserir esse arquivo em qualquer um dos scripts de login onde deseja usar as credenciais em cache. Na primeira "janela", execute:
$ ssh-agent >your_save_file # Starts ssh-agent, saves shell variables
$ . your_save_file # Loads saved shell variables into current shell
$ ssh-add # Adds keys into ssh-agent
Em cada um dos outros, execute:
$ . your_save_file
Todas as "janelas" e processos filhos iniciados após a . your_save_file
execução do comando poderão usar as credenciais armazenadas em cache no ssh-agent. Sempre que o agente ssh for interrompido ou eliminado, ou após a reinicialização do sistema, você precisará executar o primeiro conjunto de comandos novamente. Se você estiver em dúvida se as credenciais armazenadas em cache estão disponíveis ou não em um shell específico, execute
$ ssh-add -l # Show list of loaded keys in ssh-agent