Quero executar o ssh-agent (com a opção de duração máxima), mas não adicionar nenhuma chave na inicialização, mas adicioná-las sob demanda.
Como na primeira vez em que inicio sessão em algum servidor, ele deve solicitar uma senha, na próxima vez (a menos que espere mais de uma hora), ele deve se conectar corretamente:
ssh server1
Enter passphrase for key '/home/vi/.ssh/id_dsa':
server1> ...
ssh server2
server2> # no passphrase this time
# wait for lifetime
ssh server2
Enter passphrase for key '/home/vi/.ssh/id_dsa':
Não quero me lembrar manualmente de executar o 'ssh-add' toda vez. (por exemplo, senha inserida apenas para ssh e "Ah, não se lembra, é preciso redigitar").
Como configurar o ssh para adicionar automaticamente a chave ao ssh-agent se o usuário forneceu a senha?
Respostas:
O ssh suporta a adição de uma chave ao agente no primeiro uso (desde a versão 7.2). Você pode ativar esse recurso colocando o seguinte em
~/.ssh/config
:Isso também funciona ao usar ferramentas derivadas, como o git.
No log de alterações 7.2 :
fonte
Você pode trapacear e colocar algo como
alias ssh='ssh-add -l || ssh-add && ssh'
no seu.bashrc
/.profile
. Isso é executado primeirossh-add -l
, o que pode retornar 0 (existem chaves no agente), 1 (sem chaves) ou 2 (nenhum agente em execução); se retornar 0,ssh
será executado; se 1,ssh-add
será executado e depoisssh
; se 2,ssh-add
falhará essh
não será executado. Substitua&&
por;
se desejarssh
executar mesmo quando não houver nenhum agente em execução.fonte
alias ssh-hostname='(ssh-add -l | grep hostname > /dev/null) || ssh-add ~/.ssh/id_rsa_hostname && ssh -p 12345 username@hostname'
. Você pode colocar isso em loop para todas as suas chaves ssh e gerar aliases. Um truque sujo, mas funciona.Até que o auto-call-ssh-add seja suportado pelo ssh, eu adicionei isso no meu
.bashrc
, com base na proposta de Kovensky:O alias é criado apenas se a identidade não for adicionada e o alias se destrói uma vez executado.
Dessa forma, o comando ssh regular é usado após a adição da identidade.
fonte
ssh-add -t ...
), a chave adicionada ao ssh-agent pode desaparecer abruptamente, mas o alias permanecerá, pois a chave ainda está na memória.Estou usando a seguinte função shell:
Primeiro, ele resolve a configuração do host ao qual estou tentando me conectar e, em seguida, adiciona as chaves possíveis para esse host ao ssh-agent se elas ainda não foram adicionadas e, finalmente, se conectam ao host. Tenho certeza de que pode ser melhorado, por isso estou aberto a feedback.
fonte