SSH: executa o comando sudo

40

Eu tenho um script de shell interativo, que em um lugar precisa de ssh para outra máquina (baseada no Ubuntu) e executar algo como root (o usuário deve digitar sua senha, mas o comando remoto deve ser executado como indicado no script):

# ...
ssh remote-machine 'sudo ls'
# ...

No entanto, sempre recebo esta mensagem de erro:

sudo: no tty present and no askpass program specified

OK, isso é bem claro. Mas como posso contornar isso? Algo como isso deveria acontecer:

$ ssh remote-machine 'sudo ls /'
[sudo] password for user1:

/bin
/etc
/var
    
por Boldewyn 09.03.2010 / 12:59

3 respostas

49

O maravilhoso ssh tem uma cura para tudo. O ponto é adicionar o sinalizador -t para forçar o ssh a alocar uma pseudo-tty:

ssh -t remote-server 'sudo ls'
    
por 09.03.2010 / 13:10
0

Este método irá executar um único script usando sudo após ssh:

Vamos supor que temos um usuário "remoto" com recursos de sudo e temos um script que queremos que ele execute como root.

1) Defina um script em / etc / passwd para ser usado no login:

remote:x:1100:1100:Some Remote User,,,:/home/remote:/home/remote/login.sh

2) Dentro de "login.sh", nós executamos o script que queremos executar como "sudo":

#!/bin/bash
if [ "$(id -u)" != "0" ]; then
    #Not running as root, so we execute "sudo"
    sudo /usr/local/bin/script.sh
else
    #We are already rooted, so "sudo" is not required.
    /usr/local/bin/script.sh
fi
exit;

Normalmente, ele pedirá a senha duas vezes: ssh login + sudo. Se você quiser entrar apenas uma vez, tente sudo sem senha (não recomendado). < - por favor, leia o comentário de Boldewyn.

A principal vantagem é que o "ssh" não requer nenhum outro parâmetro (-t), e o sudo é forçado no lado do servidor. Além disso, depois que o script é encerrado, o usuário também é desconectado.

Pode não ser tão elegante, mas é simples e funciona.

    
por 07.09.2015 / 05:31
-1

Você pode executar o seguinte comando para obter acesso root sem interatividade:

ssh server " sudo command" < sudopassword.txt
    
por 15.04.2016 / 16:56