sudo sobre ssh: nenhum presente tty e nenhum programa askpass especificado

15

Eu continuo recebendo esse erro e tentei várias maneiras discutidas on-line para corrigir isso e nenhuma está funcionando para mim. Eu configurei as chaves SSH, portanto, quando eu a executo 'ssh [email protected]', efetua login automaticamente, também defini esse usuário visudocomo sendo 'newton ALL=(ALL:ALL) ALL' , então, tentei adicionar'newton ALL=NOPASSWD: /var/www/script.sh'

Infelizmente, toda vez que corro ssh [email protected] 'sudo /var/www/script.sh'de Cygwin, volto. Eu também tentei adicionar, -t -tmas ele solicita a senha.

total size is 21209180  speedup is 314.69
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
Jeff Schaller
fonte
Isso não é específico para Cygwin; Eu vejo o mesmo problema usando ssh example.com sudo echo hellode um sistema Linux para outro. Atualizei seu título de acordo. Também sinalizei sua pergunta para a migração para o site Unix.
21412 Keith Thompson

Respostas:

10

Você precisa ter um terminal disponível para executar, sudopara que possa solicitar a senha. Se você passar um comando para ssh, ele assume que o comando não precisa de um terminal e não cria um, a menos que você o passe -t. Veja SSH dentro do SSH falha com "stdin: is a tty" para obter uma explicação mais detalhada.

Se você não conseguir digitar a senha -t, é possível que seu problema seja devido ao Windows. O console do Windows não emula completamente um terminal unix; pode haver alguma dificuldade para os aplicativos Cygwin emularem adequadamente um terminal nessas circunstâncias (não tenho certeza disso, observe). Se esse for o problema, execute sshdentro de um emulador de terminal como o Console2 ou o Mintty (incluído na distribuição Cygwin) - consulte Melhor maneira de usar um shell com o Cygwin no Windows 7 .

Se você esperava que a senha SSH substituísse sua senha para autenticação no sudo, isso não acontecerá. Sudo requer uma senha (a menos que você adicione a NOPASSWDtag no arquivo sudoers). Observe que você ainda precisa ter um terminal, mesmo que com NOPASSWD, se a requirettyopção estiver definida no arquivo sudoers.

Se você deseja fazer login sem senha até a conta raiz (o que geralmente não é uma boa ideia do ponto de vista da segurança), use o SSH para acessar a conta raiz, de preferência em dois saltos. Veja SSH dentro do SSH falha com "stdin: is a tty" (com [email protected]for [email protected]).

Gilles 'SO- parar de ser mau'
fonte
3

Vamos permitir que você não ative nenhuma senha para o comando nodejs / binário.

Modificar visudo

sudo visudo

Com a seguinte linha para ativar nenhuma senha para um comando. Pass é vários comandos com vírgulas e espaço após cada comando.

<user name> ALL = NOPASSWD: /usr/local/bin/node

ex. sunthara ALL = NOPASSWD: /usr/local/bin/node

insira a descrição da imagem aqui

Gajen Sunthara
fonte
1

Edite o arquivo de configuração do ssh-server e acrescente na parte inferior:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes
ILMostro_7
fonte
Não funciona: service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
kiltek
Pode precisar ser alterado paraMatch User newton
ILMostro_7
1
Não, isso significa que você não pode gravar Userno seu arquivo sshd, porque essa opção de configuração não existe. (pelo menos isso é o caso no meu sistema Ubuntu 16.04)
kiltek
Nas páginas de manual: "MatchIntroduz um bloco condicional. Se todos os critérios na linha Match forem satisfeitos, as palavras-chave nas linhas a seguir substituem as definidas na seção global do arquivo de configuração, até outra linha Match ou o final Os argumentos para Corresponder são um ou mais pares de critérios-critério. Os critérios disponíveis são Usuário, Grupo, Host e Endereço. Os padrões de correspondência podem consistir em entradas únicas ou listas separadas por vírgula e podem usar o caractere curinga e a negação. operadores descritos na seção PATTERNS de ssh_config (5). "
ILMostro_7
Eu não vejo um Matchbloco em sua resposta ...
kiltek
0

Eu enfrentei esse erro quando cometi um erro no / etc / sudoers. Em vez de especificar vários comandos como este:

NOPASSWD= /bin/x, /bin/y

Eu salvei como:

NOPASSWD= /bin/x /bin/y

ou seja, sem a vírgula. Agora recebo a mensagem não presente quando tento

ssh host 'sudo x'
ottodidakt
fonte
0

Não sei se está relacionado, mas quando eu tinha '... NOPASSWD: /xyz/script.shl' no arquivo sudoers, recebi essa mensagem de erro até incluir a #!/bin/shellnamelinha na parte superior do /xyz/script.shlarquivo.

LeeH
fonte
0

comentar os parâmetros abaixo no arquivo / etc / sudoers me ajudou.

# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   !visiblepw

---> comente os parâmetros da seguinte forma

#Defaults    requiretty
#Defaults   !visiblepw
Santosh Garole
fonte