windows ssh servidores esporadicamente trava aguardando entrada de chave, mesmo em modo não interativo?

3

Estou com problemas esporádicos ao tentar usar o ssh em servidores Windows (executando freesshd ou Win32-OpenSSH , os mesmos resultados). Ao tentar executar comandos não interativos (do Debian Jessie com o cliente OpenSSH), às vezes (mas nem sempre, e em intervalos diferentes) o comando remoto parará e exigirá que você pressione ENTER para continuar.

Por exemplo:

ssh -4 -T somehost "mysqldump --master-data --all-databases" > backup.sql &

em algumas máquinas windows ele termina ok (se os bancos de dados forem pequenos o suficiente) mas em outros maiores geralmente parará (imediatamente, com backup.sql restante com tamanho 0, ou depois de algum tempo, com backup.sql tendo alguns megabytes para algumas centenas de megabytes) e, em seguida, o shell me informará que o processo do cliente ssh está aguardando entrada:

[1]+  Stopped                 ssh -4 -T somehost "cat mysqldump --master-data --all-databases" > backup.sql

se eu o trazer para fg e pressionar ENTER , ele continuará funcionando, mesmo depois que eu CTRL + Z e bg isto. Às vezes, ele terminará, outras vezes parará novamente depois de algum tempo.

strace confirma que o processo está aguardando a entrada de TTY (no descritor de arquivo 4, que é RW aberto /dev/pts/2 ou PTY semelhante de shell que gera o cliente ssh) e é por isso que o processo foi interrompido.

Se eu executar o ssh a partir do script sem o TTY associado, ele morrerá (pois não há ninguém para pressionar ENTER ). Se eu fornecer a opção -n para redirecionar o stdin de /dev/null , o ssh morrerá imediatamente após a conexão. Isso representa um problema adicional, pois as conexões ssh que não são executadas a partir do terminal (mas, por exemplo, do cron (8) / atd (8)) falharão imediatamente.

Apenas uma questão muito próxima que eu encontrei é esta , mas a solução alternativa fornecida (forçando o uso de PTY) não é realmente aplicável ao meu caso (os programas em questão modificam seu comportamento quando o PTY é detectado, adicionando sequenciamento ANSI e quebra automática de palavras, etc.).

Escusado será dizer que os mesmos comandos que se conectam a centenas de sistemas Debian (e outros GNU / Linux) que executam servidores OpenSSHD não apresentam nenhum problema (tempo usando -n ou não). Problemas só surgem quando o servidor sshd está rodando no windows microsoft.

Alguém tem idéias de como consertar ou contornar o problema? Eu tentei abordagem ingênua de:

yes '' | ssh -4 -T somehost "mysqldump --master-data --all-databases" > backup.sql &

mas não funciona bem (enquanto corrige o ssh esperando pelo teclado, ele também aleatoriamente consegue inserir novas linhas na saída, o que é inaceitável). Também relacionado servidor OpenSSH no Windows recusando-se a trabalhar sem STDIN mesmo em modo não interativo

    
por Matija Nalis 05.03.2017 / 00:45

0 respostas