SSH Falha ao bifurcar com sshpass

4

Eu tenho um problema com o comando de encaminhamento de porta usando sshpass. O problema é que ele está trabalhando em um servidor e não funciona em outro. Ambos são do Debian 7 x64 boxes.

sshpass -p password ssh -f -D 0.0.0.0:2002  -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=debug [email protected] -T -N

Este comando funciona sem problemas no servidor 1, mas não funciona no servidor 2.

Saída de depuração do servidor com falha:

Authenticated to 5.5.5.5 ([5.5.5.5]:22).
debug1: Local connections to 0.0.0.0:2002 forwarded to remote address socks:0
debug1: Local forwarding listening on 0.0.0.0 port 2002.
debug1: channel 0: new [port listener]
debug1: forking to background

Saída de depuração do servidor em funcionamento:

Authenticated to 5.5.5.5 ([5.5.5.5]:22).
debug1: Local connections to 0.0.0.0:2002 forwarded to remote address socks:0
debug1: Local forwarding listening on 0.0.0.0 port 2002.
debug1: channel 0: new [port listener]
debug1: forking to background
debug1: Entering interactive session.

Os binários sshpass e ssh são iguais em ambos os servidores. Eu verifiquei isso usando md5sum.

Alguém tem uma ideia do que poderia estar errado? Estou perdendo a cabeça tentando resolver esse mistério.

    
por Mark 09.08.2014 / 02:40

1 resposta

0

TL; DR

Isso funcionou para mim:

sshpass -p password nohup ssh -f ... >/dev/null


Bem, eu quase perdi a cabeça também. A diferença entre seus hosts debian que faz com que sshpass funcione ou não, é o número de núcleos de CPU. O problema aparece em um host de núcleo único. Tocar com strace mostrou que o processo sshpass é eliminado pelo sistema depois de receber SIGHUP . Em um host multi-core, o processo forjado ssh tem tempo suficiente para configurar o manipulador SIGHUP para que ele não seja eliminado.
Como solução alternativa, você pode usar o utilitário nohup para executar sshpass para não ser eliminado pelo SIGHUP .

    
por 23.11.2017 / 05:34