Estou tentando fazer com que os seguintes comandos sejam executados automaticamente quando eu fizer login no meu servidor via ssh:
ssh-agent /bin/bash
ssh-add ~/.ssh/id_rsa
Minha chave ssh tem uma frase secreta e posso digitá-la uma vez por login.
Tentei colocar isso no meu arquivo .bashrc, porém acredito que o ssh-agent inicia uma nova sessão bash. Quando tento fazer login depois de ter isso em meu . bashrc, ele fica travado e tenho que digitar 'sair' para ver o prompt 'digite a senha para desbloquear a chave'
Alguma outra sugestão?
O servidor está executando o Ubuntu LTS
Você pode tentar adicionar isso:
Dessa forma, o
ssh-agent
shell não inicia um novo shell, ele apenas se lança em segundo plano e exibe os comandos do shell para definir as variáveis de ambiente apropriadas.Como dito no comentário, talvez você não queira executar o agente no host remoto, mas sim na caixa em que está trabalhando e use
para encaminhar os serviços de seu agente ssh local para o host remoto.
Por motivos de segurança, você só deve usar o encaminhamento de agente com hosts executados por pessoas confiáveis, mas é melhor do que executar um agente completo remotamente a qualquer momento.
Outra alternativa é adicionar isso ao seu .bashrc. Isso tem a mesma vantagem da resposta de Erik (garantindo uma única instância), mas não requer um pacote adicional.
Isso executa ssh-add se não houver pelo menos 1 chave carregada e define um tempo limite de chave de 1 dia:
Uma alternativa é usar o Chaveiro do Funtoo . Então você pode colocar este one-liner em seu bash shell:
Isso faz a mesma coisa (lança o agente ssh, etc.), embora também não execute um processo ssh-agent para cada subshell. Em vez disso, ele procura instâncias "já em execução" que você possui e o anexa a elas.
Lembre-se também de que, se você tiver um keep-alive de conexão ssh, precisará excluir os arquivos de conexão existentes antes de
-A
entrar em vigor. Exclua todos os arquivos de conexão ssh em/tmp/[host]
.