executando o comando como su

0

Estou executando este comando como su . Eu fiz a conexão com SSH (usando sshNet) e, em seguida, quando tento definir o comando su - , não obtenho resposta. Eu tenho a senha e o comando que gostaria de executar depois de entrar como su .

Meu código, que eu sei que está errado, agora se parece com isso:

using (var sshClient = new SshClient("10.10.8.113","ems", "ems"))
{
    sshClient.Connect();
    sshClient.CreateCommand("su -").Execute();
    sshClient.CreateCommand("123456").Execute();
    sshClient.CreateCommand("EmsMenu.sh");
}

Eu li sobre implementação, usando o Shell, mas não consegui ter sucesso dessa forma.

    
por OA5883 13.04.2015 / 14:08

2 respostas

3

A razão pela qual isso está falhando é que, por padrão, ssh não cria um terminal (a pty ) na máquina de destino. Isso significa que su não pode solicitar uma senha, por isso falha. ( sudo também falharia ao solicitar, pela mesma razão, a menos que receba o -S flag - conforme apontado pelo @Scott).

  1. Você pode dizer a ssh para criar um terminal ( pty ) no sistema remoto, para que su possa solicitar uma senha. Com um comando normal, você faria isso fornecendo o sinal -t ao ssh. Infelizmente não posso oferecer-lhe qualquer ajuda com o método para fazer isso com SSH.NET porque sua documentação é fornecida no formato CHM, que não posso abrir .

  2. Você pode cortar a parte su totalmente conectando-se ao servidor remoto com a conta de usuário de destino desejada, "root". Por motivos de segurança, isso pode falhar em alguns sistemas que recusam logins raiz que tentam usar uma senha, portanto, você pode investigar logins baseados em certificado. Um certificado adequado pode ser gerado com o comando ssh-keygen -t rsa .

por 13.04.2015 / 14:48
0

É possível usar sudo antes do comando que você deseja executar? Como em vez de:

su
whatever command

faça:

sudo whatever command
    
por 13.04.2015 / 14:44

Tags