Eu tenho que rodar um script remotamente em várias máquinas Fedora através de ssh .
Como o script requer privilégios root , eu faço:
$ ssh me@remost_host "sudo touch test_sudo" #just a simple example
sudo: no tty present and no askpass program specified
As máquinas remotas são configuradas de tal forma que a senha para o sudo é never solicitada.
Para o erro acima, a correção mais comum é alocar um pseudo-terminal com a opção -t
em ssh:
$ ssh -t me@remost_host "sudo touch test_sudo"
sudo: no tty present and no askpass program specified
Vamos tentar forçar essa alocação com -t -t
:
$ ssh -t -t me@remost_host "sudo touch test_sudo"
sudo: no tty present and no askpass program specified
Não, não funciona.
Em /etc/sudoers
, claro que tenho esta linha:
#Defaults requiretty
... mas não consigo manualmente alterá-lo em dezenas de máquinas remotas.
Estou sentindo falta de algo aqui? Existe uma solução fácil?
EDITAR:
-
Aqui é o arquivo sudoers de um host no qual
ssh me@host "sudo stat ."
funciona.
-
Aqui é o arquivo sudoers de um host onde ele não funciona.
EDIT 2:
Executando tty
em um host em que ele funciona:
$ ssh me@host_ok tty
not a tty
$ ssh -t me@host_ok tty
/dev/pts/12
Connection to host_ok closed.
$ ssh -t -t me@host_ok tty
/dev/pts/12
Connection to host_ok closed.
Agora em um host em que não funciona:
$ ssh me@host_ko tty
not a tty
$ ssh -t me@host_ko tty
not a tty
Connection to host_ko closed.
$ ssh -t -t me@host_ko tty
not a tty
Connection to host_ko closed.
EDIT 3
Permissões em / dev / tty * em uma máquina onde o acima não funcionou:
$ stat /dev/tty*
File: '/dev/tty'
Size: 0 Blocks: 0 IO Block: 4096 character special file
Device: fd02h/64770d Inode: 17089401 Links: 1 Device type: 5,0
Access: (0666/crw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2013-12-11 11:44:01.000000000 +0000
Modify: 2013-12-11 11:44:01.000000000 +0000
Change: 2014-01-20 15:43:36.000000000 +0000
EDIT 4
Ok, então no /var/log/
eu tenho o seguinte:
$ ls /var/log
btmp lastlog maillog messages secure spooler sudo tallylog wtmp yum.log
Eu tentei com messages
e secure
, mas eles estão vazios. sudo
, por outro lado, contém algo ... o único problema é que ele exibe a mesma mensagem de log se eu usar -t
, -t -t
ou nada:
Jun 4 17:38:52 : my_username : no tty present and no askpass program
specified ; TTY=unknown ; PWD=/home/my_username ; USER=root ;
COMMAND=/usr/bin/stat .