sudo: não tty presente e nenhum programa askpass especificado

54

Ao tentar executar um binário remoto usando sudo na caixa remota:

ssh remotehost "sudo ./binary"

Eu vejo este erro:

  

sudo: no tty present e nenhum programa askpass especificado

Como posso trabalhar com isso?

EDITAR isso definitivamente não é uma duplicata da pergunta sugerida como tal. As respostas são completamente irrelevantes. Na verdade, essas alterações no arquivo sudoers já foram aplicadas ao host remoto.

    
por Drew Noakes 15.04.2013 / 16:32

5 respostas

60

Uma maneira simples é especificar -t :

ssh -t remotehost "sudo ./binary"

Da página do manual:

  

Força a alocação pseudo-tty. Isso pode ser usado para executar programas arbitrários baseados em telas em uma máquina remota, o que pode ser muito útil, por ex. ao implementar serviços de menu. Múltiplas opções -t forçam a alocação tty, mesmo que ssh não tenha tty local.

Eu não posso explicar exatamente porque isso funciona, e pode haver uma maneira melhor. Eu gostaria de ouvir sobre isso em caso afirmativo:)

@psusi explica por que isso funciona em um comentário abaixo.

    
por Drew Noakes 15.04.2013 / 16:32
15

Pergunta:

Como posso trabalhar com isso?

sudo: no tty present and no askpass program specified

Resposta alternativa

Como alternativa, tente:

sudo -S ./binary

Isto direciona o sudo para ler a senha da entrada padrão, stdin.

Cenários onde isso ajuda

Em ambientes chroot, essas outras respostas podem não funcionar corretamente ... talvez porque:

  1. / etc / shadow vs conflito / etc / passwd não permitindo que o usuário insira uma senha.
  2. Em um ambiente chroot, o acesso a tty1 pode ser um pouco instável, e ctrl-alt f2-to tty2 é inviável, porque é um tty do ambiente não-chroot.

Por exemplo: Instalando / reparando manualmente o linux ou o gerenciador de inicialização, usando um ambiente chroot (como o Archlinux e o arch-chroot).

    
O
por elika kohen 22.01.2016 / 19:45
5

Você precisa definir o terminal / aplicativo que lerá a senha. Existem duas variantes:

  1. export SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
  2. vim /etc/sudoers (padrões visíveispw)
por user282246 16.05.2014 / 17:51
4

Ele falha, porque sudo está tentando solicitar uma senha root e não há pseudo-tty alocada.

Você deve fazer login como root ou configurar as seguintes regras em /etc/sudoers (ou: sudo visudo ):

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

Depois, certifique-se de que seu usuário pertença a admin group (ou wheel ).

    
por kenorb 30.03.2015 / 19:28
2

Você também pode criar um arquivo como "sudo_shutdown" em /etc/sudoers.d, com conteúdo:

# Allow admins to shutdown without pass
%adm ALL=(ALL) NOPASSWD: /sbin/shutdown

Isso permite que os usuários que estão no grupo adm sejam desligados sem uma senha.

    
por Peter 08.04.2017 / 15:38