Gostaria de usar minha chave SSH protegida por senha ao executar tarefas com parallel-ssh
(e ferramentas relacionadas). No entanto, não consigo fazer isso funcionar.
Toda a documentação a respeito parallel-ssh
mostra que devo poder usar --askpass
ou -A
fazer isso:
-A
--askpass
Prompt for a password and pass it to ssh. The password may be
used for either to unlock a key or for password authentication. The
password is transferred in a fairly secure manner (e.g., it will not
show up in argument lists). However, be aware that a root user on
your system could potentially intercept the password.
No entanto, quando digito a senha da minha chave, ela não funciona:
$ parallel-ssh --hosts=machines --user=my_user --askpass \
--timeout=0 --inline -v 'sudo apt-get update'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 09:59:36 [FAILURE] amritiii Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[2] 09:59:37 [FAILURE] gbdev Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[3] 09:59:37 [FAILURE] code Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[4] 09:59:37 [FAILURE] apollo Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[5] 09:59:37 [FAILURE] odin Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[6] 09:59:37 [FAILURE] hathor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[7] 09:59:37 [FAILURE] ldap Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[8] 09:59:37 [FAILURE] thor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[9] 09:59:37 [FAILURE] bioserver Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
Confirmei que minha chave e senha SSH funcionam em cada uma das máquinas, por isso não faço ideia de como fazer isso funcionar.
ssh
key-authentication
parallel-ssh
Nathan S. Watson-Haigh
fonte
fonte
parallel-ssh
epssh
são realmente os mesmos.Respostas:
Supondo que
parallel-ssh
epssh
sejam equivalentes, então sim, o que você está tentando fazer deve funcionar muito bem com o uso da chave na frase secreta-A
.Exemplo
Aqui está um exemplo em que eu me conecto a 2 sistemas diferentes
host1
ehost2
. Eu uso a-l
opçãopssh
para fornecer um usuário padrão deroot
. No entanto,host2
eu substituo isso no-H
comutador especificando o nome do host comouser1@host2
.Quando o procedimento acima funcionar, você notará a saída do comando que estou executando
echo "hi"
,.Seu problema
O problema que você está enfrentando com uma senha no seu par de chaves SSH é devido a um bug. Este é o bug intitulado: Edição 80: Não passa a senha? . O quarto comentário a esse problema mostra um patch:
excerto
Referências
fonte
parallel-ssh
epssh
são de fato os mesmos. Não estava perguntando se era possível - a documentação deixa claro que é possível. Estou tendo problemas para realmente fazê-lo funcionar como está documentado.parallel-ssh
ainda não sabem qual a melhor forma de detectar a pergunta do prompt de senha e, assim, responder com a senha / frase inserida, eu continuarei com meu método de chaveiro. Eu não gostaria que minha frase secreta fosse inadvertidamente revelada para o prompt de pergunta errada.parallel-ssh
passa a senhaSSH
. No entanto, para aqueles que se depararem com essa questão no futuro, esse bug pode ter sido corrigido ou você pode optar por não editar oaskpass_client.py
arquivo. Em ambos os casos, você pode contornar isso usando akeychain
resposta ( unix.stackexchange.com/a/128998/57414 ) ou a resposta ssh-agent ( unix.stackexchange.com/a/129022/57414 )Eu consegui fazer isso funcionar instalando, em
keychain
vez de corrigir manualmente o bug, causando meus problemas.Instalar e executar manualmente o chaveiro
Executar comando sem entrada de senha / senha
Agora, desta vez, não preciso da minha senha ao chamar,
parallel-ssh
pois o chaveiro cuida da autenticação:Executar chaveiro no login
Em vez de precisar executar manualmente e adicionar sua chave ao chaveiro, basta adicionar o seguinte ao final do seu
~/.bash_profile
:Isso garante que, no seu primeiro login, após uma reinicialização, você seja solicitado a senha da sua chave. Sua chave permanecerá no chaveiro até a próxima reinicialização ou você limpará o chaveiro manualmente.
Empregos Cron usando o chaveiro
Com o texto acima inserido em seu
~/.bash_profile
arquivo, você pode aproveitar o fato de que sua chave está agora armazenada no chaveiro, agregando o mesmo arquivo antes que seu cronjob seja executado. Por exemplo, eu tenho um script de backup que é executado às 21:00 todas as noites e copia coisas para um computador remoto via SSH. Esta é uma entrada no meu crontab (crontab -e
):fonte
Use o ssh-agent para se autenticar automaticamente (com um nome de shell como argumento para definir as variáveis de ambiente do agente nesse novo shell). Adicione a chave com ssh-add e digite sua senha apenas uma vez.
fonte