Por que a execução de um comando específico remotamente por SSH falha?

0

Estou criando dois scripts Bash no meu Raspberry Pi, que está executando a distribuição Linux padrão baseada no Debian: um para dormir no meu computador desktop e outro para desligá-lo.

O script para desligar o computador funciona bem e seu conteúdo é:

sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "shutdown /s"

Minha área de trabalho está executando o Windows 10 e o servidor SSH integrado que vem com o Windows 10.

Quando tento executar o script para dormir no meu computador, no entanto, sou apresentado à saída:

Packet integrity error (165 bytes remaining) at ../channels.c:2401
Disconnecting: Packet integrity error.

O conteúdo deste script é:

sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "psshutdown /d"

'psshutdown' refere-se ao utilitário Windows Sysinternals .

Estranhamente, executar o comando psshutdown /d em um prompt de comando do administrador, quando estiver na minha área de trabalho, acomoda meu computador com êxito. Ele também funciona se eu me conectar via SSH a partir do Pi sem especificar um comando para executar uma vez conectado, ou seja, sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME e, em seguida, executar o comando psshutdown /d . Executar o mesmo comando do script diretamente no Bash falha com a mesma saída acima.

Curiosamente, ao tentar executar alguns outros comandos da mesma maneira que no script de suspensão, alguns trabalham e alguns lançam um erro diferente. Por exemplo, sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "whoami" funciona bem e retorna a saída correta, mas sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "date" produz a saída exec request failed on channel 0

O que está causando falha no script de suspensão e como posso resolver o problema para executar com êxito o comando no SSH?

Nota: Eu entendo que não é ideal armazenar a senha do SSH em texto simples em um arquivo de script, mas configurar a autenticação baseada em chave no servidor SSH integrado é um desafio para outro dia.

    
por LJD200 15.07.2017 / 17:46

1 resposta

1

Isso provavelmente se deve à sua PATH ... tentativa de especificar o caminho completo para psshutdown ou date .

A sessão SSH, sem shell ou PTY, provavelmente terá um PATH set muito básico ...

    
por 15.07.2017 / 18:17