Usando ssh paralelo com chave pública

3

Eu configurei o servidor ssh remoto para login via par de chave pública-privada (somente). Eu posso entrar no servidor e executar comandos usando ssh:

ssh [email protected]  -i ~/.ssh/my_key echo fu

Gostaria de enviar comandos para o servidor usando parallel-ssh do pssh package. Eu uso a opção -H para especificar a lista de servidores (um servidor), -i para imprimir os resultados na tela e -A para que o programa peça uma senha para a chave. A documentação declara que é capaz de passar argumentos para baixo para ssh usando -x ou -X . No entanto, nem o seguinte comando funciona:

parallel-ssh -A -i -H "[email protected]" -X "-i ~/.ssh/my_key" 'echo fu'

saída sendo:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 17:03:35 [FAILURE] [email protected] Exited with error code 255
Stderr: Warning: Identity file ~/.ssh/my_key not accessible: No such file or directory.
Permission denied (publickey).

(eu posso ver o arquivo com ll ~/.ssh/my_key .)

Nem este comando é bem-sucedido:

 parallel-ssh -A -i -H "[email protected]" -x '-i ~/.ssh/my_key' 'echo fu'

saída:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 17:15:06 [FAILURE] [email protected] Exited with error code 255
Stderr: Enter passphrase for key '/home/local_user/.ssh/my_key':
Permission denied (publickey).

Este segundo é completamente estranho, pois man parallel-ssh afirma que a opção -A faz "Solicitar uma senha e passá-la para ssh. A senha pode ser usada para desbloquear uma chave ou para autenticação de senha. "

Então, como alguém poderia usar uma chave pública protegida por senha dentro do comando parallel-ssh ?

    
por Dimitry 04.05.2018 / 16:24

1 resposta

2

Este é um bug no programa pssh , que é apenas uma coleção de um script python. Esses scripts recorrem à análise da saída do programa ssh para interagir com ela.

Uma maneira de fazê-lo funcionar é corrigi-lo . dpkg -L pssh listará todos os arquivos instalados com o pacote pssh . askpass_client.py é o arquivo que precisa ser modificado. A linha 67 é

if not prompt.strip().lower().endswith('password:'):

e deve ser:

if not ( prompt.strip().lower().endswith('password:') or 'enter passphrase for key' in prompt.strip().lower()):

Então o comando

parallel-ssh  -A -i -H "[email protected]" -x "-i ~/.ssh/my_key"  'echo fu'

funcionará.

    
por Dimitry 07.05.2018 / 16:37