Ao tentar executar um binário remoto usando sudo
na caixa remota:
ssh remotehost "sudo ./binary"
Eu vejo este erro:
sudo: nenhum tty presente e nenhum programa askpass especificado
Como posso resolver isso?
EDITAR definitivamente não é uma duplicata da pergunta sugerida como tal. As respostas são completamente irrelevantes. De fato, essas alterações no arquivo sudoers já foram aplicadas ao host remoto.
ssh
remote-access
Drew Noakes
fonte
fonte
Respostas:
Uma maneira simples é especificar
-t
:Na página do manual:
Não sei explicar exatamente por que isso funciona, e pode haver uma maneira melhor. Eu gostaria de ouvir sobre isso, se sim :)@psusi explica por que isso funciona em um comentário abaixo.
fonte
sudo
requer que um tty solicite uma senha e, ao especificar comandos para executarssh
, não aloca um por padrão, pois isso normalmente é usado para executar comandos não interativos que podem transferir dados binários, o que pode desarmar o tty .-tt
, necessário ao passar de comando usando heredocPergunta, questão:
Como posso resolver isso?
Resposta Alternativa
Como alternativa, tente:
sudo -S ./binary
Isso instrui o sudo a ler a senha da entrada padrão, stdin.
Cenários em que isso ajuda
Em ambientes chroot, essas outras respostas podem não funcionar corretamente ... talvez porque:
Por exemplo: Instalação / reparo manual do linux ou do carregador de inicialização, usando um ambiente chroot (como Archlinux e arch-chroot).
fonte
Você precisa definir o terminal / aplicativo que lerá a senha. Existem duas variantes:
export SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
vim /etc/sudoers
(Padrões visíveispw)fonte
visudo
vez de avim /etc/sudoers
fim de evitar um possível bloqueio da sua máquina devido a um erro na sua edição?Ele falha, porque
sudo
está tentando solicitar a senha root e não há pseudo-tty alocado.Você deve fazer login como root ou configurar as seguintes regras em seu
/etc/sudoers
(ousudo visudo
:):Em seguida, verifique se o usuário pertence ao
admin
grupo (ouwheel
).fonte
Você também pode criar um arquivo como "sudo_shutdown" em /etc/sudoers.d, com o conteúdo:
Isso permite que os usuários do grupo adm sejam encerrados sem uma senha.
fonte
No meu caso, recebi esse erro porque não estava especificando um comando que gostaria de usar como root nos sudoers
Algo como
/etc/sudoers.d/myuser
:trabalhou para mim
fonte