no tty presente e nenhum programa askpass especificado no servidor remoto

0

Quando eu tento executar um script em um servidor remoto usando ssh, estou recebendo o erro "no tty present e no askpass program specified".

Principal A linha de comando onde estou recebendo o erro é:

sudo /usr/sbin/userdel $user_id

Por favor, sugira o que precisa modificar na minha linha de comando.

NOTA: Não posso modificar o arquivo sudoers no servidor remoto.

    
por Rahul Raj 18.04.2018 / 03:51

1 resposta

2

Você deve passar a opção ssh the -t , por isso aloca um tty (terminal) no lado remoto para executar seu script.

Os comandos que precisam solicitar uma senha (como sudo ) precisam de um terminal, para que possam controlar a E / S do terminal, como impedir a saída de caracteres digitados, para que sua senha não apareça enquanto você estiver digitando.

Quando você executa ssh $host (sem comando), o cliente SSH aloca automaticamente um terminal (portanto, não é necessário -t ), mas se você executá-lo com um comando, como ssh $host /path/to/script , ele será Não aloque um terminal, pois para a maioria dos comandos um terminal não é necessário e simplesmente redirecionar os descritores de arquivo padrão (stdin, stdout, stderr) é suficiente ... A opção -t altera esse comportamento e aloca um terminal mesmo que você esteja passando uma linha de comando.

Consulte a documentação da -t opção na página de manual do SSH. Procure outras referências a pty ou pseudo-terminal nessa página (BTW, eles chamam de pty / pseudo-terminal em vez de tty desde que o terminal não está ligado a um dispositivo real, como um teclado / monitor ou uma porta serial ... para esses propósitos, significa o mesmo.)

    
por 18.04.2018 / 06:03