Corrigido: sudo: nenhum tty presente e nenhum programa askpass especificado



Experimente Nosso Instrumento Para Eliminar Problemas

A linha de saída especificada no programa no tty present e no askpass é uma daquelas mensagens de erro ssh que realmente não é muito útil porque não chega ao ponto do que está causando o problema. Mais do que provável, você está realmente trabalhando com um TTY válido de algum tipo quando vê a mensagem e provavelmente já conseguiu inserir sua senha sudo via ssh muito bem. É mais do que provável que você esteja lidando com um erro de sintaxe, mas a mensagem não trata diretamente desse fato.



Uma vez que este é um problema associado ao próprio ssh, você provavelmente será capaz de reproduzir o problema no Linux, FreeBSD, macOS e serviços Unix do Cygwin no Microsoft Windows. Felizmente, a correção deve ser praticamente a mesma em todas essas plataformas.



Método 1: Encontrar um Terminal para ssh

Embora você provavelmente já esteja trabalhando em um terminal, o ssh provavelmente não percebeu isso. Ele ainda pode estar tentando procurar um emulador de terminal TTY, apesar do fato de você estar dentro de uma janela de prompt de comando. Tente reproduzir o erro para testar isso. Configuramos uma máquina virtual para servir de exemplo e executamos ssh user@linuxtest.example ‘sudo /var/mail/startup.sh’ como um teste. Naturalmente, você desejará alterar o comando e a linha ssh para algo que corresponda ao que você está tentando fazer.



Você deve certificar-se de que está fazendo login no servidor que pensava estar. Independentemente disso, verifique se você ainda recebe a mensagem de erro sudo: nenhum tty presente e nenhum programa askpass especificado. Mais do que provável, se você ainda estiver recebendo, você verá três vezes e possivelmente será solicitado a inserir sua senha da forma que faria se estivesse executando o sudo localmente no Debian ou Ubuntu.

Tente adicionar -t após ssh para corrigir seu erro de sintaxe. Nove em cada dez vezes, isso forçará o ssh a alocar um TTY virtual para si mesmo e fingir que está sendo executado dentro de um terminal real. Você não precisa mudar mais nada sobre o seu comando. Simplesmente adicione a opção -t após as letras ssh e então mantenha o host e o comando passado o mesmo. Você também deve manter isso em mente se precisar executar o ssh na última parte do seu comando.



Por exemplo, se você estava recebendo este mesmo tipo de erro ao executar um comando que foi formatado como ssh -t user@linuxtest.example ‘ssh user@linuxtest2.example’ você teria que manter a opção -t após o primeiro ssh para evitá-lo. Observe que, se mais tarde você alterou o segundo comando para produzir ou consumir dados, você não desejaria usar -t de forma alguma. Por exemplo, se você começou a executar cat em vez de um script, então você poderia despejar o -t já que você não precisaria alocar um terminal para isso.

Método 2: corrigindo o arquivo visudo

Você também pode ter um problema de configuração que produz esse erro. Modifique o arquivo visudo emitindo o sudo visudo comando e tenha em mente que você nunca vai querer editar este arquivo de outra maneira. Você deve encontrar uma linha que apresenta ALL = NOPASSWD seguida pelos tipos de comandos que você não precisa inserir a senha do administrador para executar.

Cada comando individual precisa terminar com uma vírgula, exceto o último da linha. Portanto, se você tiver algo como / sbin / poweroff / sbin / start / sbin / stop, ele tratará todos como um único comando e enviará o erro para você. Da mesma forma, se estiver faltando um comando que está tentando executar via ssh, você também receberá esse erro. Faça os ajustes necessários e salve o arquivo antes de verificar se o erro ainda pode ser reproduzido.

Se você ainda tiver o erro mesmo depois de fazer isso e reiniciar o serviço, tente o seguinte comando na imagem abaixo e certifique-se de que a linha PermitTTY apresenta a palavra sim depois dela. Se esta for a última linha em seu arquivo, certifique-se de que haja uma nova linha em branco depois. GNU nano executa esta tarefa automaticamente por padrão.

Você precisará reiniciar todos os serviços relevantes antes de tentar reproduzir novamente a mensagem de erro.

3 minutos lidos