Como posso executar o ssh-add on demand? Pode agir como SSH_ASKPASS?

2

Eu quero ssh de user@local a user@remote várias vezes por dia com uma chave SSH criptografada, uma situação que ssh-agent manipula com um bom compromisso entre segurança e usabilidade.

Também gostaria de não ter que lembrar de executar ssh-add antes de ssh 'ing - prefiro receber a senha na primeira vez que precisar dela e, em seguida, ser lembrada automaticamente, digamos, oito horas.

Então: Eu acho que eu quero usar ssh-add aproximadamente onde eu acho que $SSH_ASKPASS é usado, exceto ssh-add não alimenta ssh da senha que ele quer, tanto quanto eu entendo. Meu entendimento é correto? Em caso afirmativo, a solução óbvia parece estar escrevendo um script que solicita uma senha, executa ssh-add e, em seguida, ecoa a senha de volta para ssh . Isso soa como a abordagem correta? Existe uma maneira melhor? Se não, você tem um ponteiro ou dois para começar este script?

(Eu uso o ssh do console linux, xterm e emacs *shell* buffers; na verdade, a solução não precisa fazer nada extravagante.)

    
por Jonas Kölker 28.08.2014 / 11:12

3 respostas

3

Eu estava procurando basicamente a mesma solução e encontrei dois que parecem úteis sob duas suposições diferentes:

  • Michael J. Schultz resolveu seu problema com isso escrevendo um alias de shell para ssh . Usa

    ssh-add -l > /dev/null || ssh-add
    

    para verificar se o ssh-agent tem alguma chave carregada e, se não houver nenhuma, execute ssh-add. Ele observa que a maneira como ele escreveu sua solução se encaixa em seu caso de uso, mas não se ajusta a todos.

  • Raúl Benencia escreveu um script em Python chamado odsa para automaticamente descobrir quais de suas chaves são necessárias para um determinado host e carregá-las no ssh-agent.

por 30.08.2014 / 04:08
2

A maneira como lidei com o mesmo requisito é semelhante ao que Mike escreveu sobre Michael:

~/bin/sshmyvps

#!/bin/bash
if ! ssh-add -l|grep -q vpsaccess
then
    ssh-add -t 2h ~/ssh-keys/vpsaccess.key
fi
ssh  [email protected]

A principal diferença é que não procuro apenas qualquer chave carregada, mas apenas para uma específica e, em seguida, deixá-la válida apenas por um tempo restrito.

    
por 29.05.2016 / 22:28
2

Desde OpenSSH 7.2 , há a opção de configuração do cliente AddKeysToAgent .

Adicione isso ao seu arquivo ~/.ssh/config :

AddKeysToAgent yes

Nas notas da versão:

  • ssh (1): Adicione uma opção de cliente AddKeysToAgent que pode ser definida como 'sim', 'não', 'perguntar' ou 'confirmar' e o padrão é 'não'. Quando ativada, uma chave privada usada durante a autenticação será adicionado ao ssh-agent se estiver em execução (com a confirmação ativada se definido para 'confirmar').
por 01.02.2017 / 10:43