Eu quero colocar ssh-add /path/to/special_key
no topo de um script. Isso funciona bem, mas sempre solicita a senha. Isso é estranho e um pouco irritante, pois ainda pede a senha, mesmo quando ssh-add -l
mostra que a chave já foi adicionada.
Existe uma maneira de dizer: "adicione essa chave e pergunte a senha se ela ainda não tiver sido adicionada, caso contrário, não faça nada"?
shell-script
ssh
ssh-agent
Darren Cook
fonte
fonte
Respostas:
Não vejo opções para adicionar ao ssh que ajudem a alcançar o resultado desejado, mas é muito fácil contornar isso, pois você está preocupado com uma chave em particular.
Primeiro, pegue a impressão digital da sua chave_específica:
Digamos que essa impressão digital se pareça com 6d: 98: ed: 8c: 07: 07: fe: 57: bb: 19: 12: 89: 5a: c4: bf: 25
Em seguida, na parte superior do seu script, use
ssh-add -l
para verificar se essa chave está carregada, antes de solicitar a adição:Você pode dobrar tudo isso em uma linha, se desejar:
fonte
ssh-keygen
(afinal, eu não quero gerar nenhuma chave), em vez disso, usando o caminho da chave:ssh-add -l | grep -q 'path/to/key' || ssh-add /path/to/key
ssh-keygen
na resposta não gera uma chave - o mesmo quessh-add -l
no seu exemplo, na verdade, não adiciona nada. Os sinalizadores modificam o comportamento dos comandos para que não correspondam exatamente ao nome. Observe que essas versões diferem funcionalmente - se a verificação por caminho e a chave nesse caminho forem alteradas, sua versão não será atendida. A versão na resposta também detectaria a chave existente, não importando de onde foi carregada.Não existe uma maneira direta de verificar usando apenas,
ssh-add
mas você pode usarssh-keygen
e alguns scripts para verificar.O texto acima seria impresso
yes
se a impressão digital representada pelo arquivo/path/to/special_key
estivesse presente nassh-add -l
saída do arquivo .Exemplo
Onde o conteúdo da saída se
ssh-keygen -lf /path/to/special_key
parece com isso:E estamos usando `awk '{print $ 2}' para selecionar apenas a segunda coluna, que contém a impressão digital, ou seja:
Referências
fonte
Você pode ter motivos específicos para usá-lo
ssh-add
explicitamente, mas se quiser apenas "Quero que minha senha seja solicitada na primeira vez em que usar a chave, mas não depois disso", o openssh tem uma solução mais simples:Coloque
AddKeysToAgent yes
no seu.ssh/config
arquivo.fonte
ssh-add -K FILE
funcionou bem para mim no Mac.Ele ainda mostra as linhas "Identity added:", mas não pede a senha.
Na página do manual:
fonte