Há algum tempo, no StackOverflow, fiz essa pergunta sobre ssh-agent e crontab . Agora tenho uma pergunta semelhante sobre ssh-agent e screen em sistemas linux.
Portanto, no meu Mac, o ssh-agent é iniciado na inicialização do sistema, para que esteja sempre disponível para mim. Eu acho que seria verdade no meu linux (redhat el5 / fedora) se eu estivesse usando o X-Windows. No entanto, esta é uma máquina de servidor remoto e estou sempre efetuando login via ssh.
Eu adoraria ter as chaves ssh configuradas corretamente, para não precisar digitar minha senha várias vezes durante uma atualização ou confirmação do svn. Fico feliz em digitar minha senha uma vez por sessão e desencorajo nossa equipe a ter chaves ssh sem senha.
Por um breve momento, parecia que "eval` ssh-agent -s` "no meu .bash_profile, emparelhado com um comando para matar o ssh-agent quando eu saí, funcionaria. No entanto, fazemos uso intenso da tela para gerenciar programas interativos de longa duração e ambientes de desenvolvimento. Se você iniciar e parar o ssh-agent como acabei de descrever, ele será morto quando você sair do terminal e as sub-sessões da tela que costumavam se referir a essa instância do ssh-agent serão abandonadas.
Então ... como posso ser um usuário do console, que usa a tela, que usa uma senha com as teclas ssh, que não precisa digitar a senha constantemente?
fonte
/etc/conf.d/local
(ou seu equivalente) para cada usuário que usa o agente, para iniciar umssh-agent
processo separado por usuário. Se, como você diz, não tiver um grande número de usuários, isso não seria muito ruim. Você levanta um bom argumento (que eu esqueci de considerar) sobre sessões de terminal anexadas ao agente; veja minha edição para a resposta.Confira chaveiro . Faz todas as opções acima. Veja especialmente as opções
--clear
e--timeout
.fonte
Uma abordagem melhor é usar o encaminhamento de agente ssh (
-A
opção). Isso permite que a pessoa que usa o ssh use as chaves do agente ssh em execução na máquina da qual eles são originários, presumivelmente na estação de trabalho em que estão realmente sentados.fonte
para acompanhar o encaminhamento do agente ssh, você descobrirá que, por padrão, as credenciais encaminhadas do ssh não estarão disponíveis para a sessão da tela depois que você sair, efetuar login novamente e anexar novamente à sua sessão.
Você pode contornar isso, no entanto, fazendo com que a tela defina a variável de ambiente SSH_AUTH_SOCK como algo bem conhecido e faça com que esse local conhecido seja atualizado para o soquete de autenticação atual.
Eu uso essa função shell para entrar novamente na tela e corrigir a meia ssh auth:
e eu tenho isso no meu .screenrc:
Espero que isto ajude.
fonte
Se eu entendi direito, você quer apenas uma sessão de tela, que você desanexa e reconecta algumas vezes, mas nunca mais deseja inserir novamente as senhas do ssh-agent (sua senha de chave privada).
Eu acho que a maneira mais fácil é iniciar a tela, do que iniciar o ssh-agent com um sub shell e depois permanecer nesse sub shell. Ou seja,
fonte