sudo over ssh: nessun tty presente e nessun programma askpass specificato


15

Continuo a ricevere questo errore e ho provato diversi modi discussi online per risolvere questo problema e nessuno funziona per me. Ho installato le chiavi SSH, quindi quando lo eseguo 'ssh newton@host.com'automaticamente mi accedo, ho anche impostato questo utente visudoper essere 'newton ALL=(ALL:ALL) ALL' quindi ho anche provato ad aggiungere'newton ALL=NOPASSWD: /var/www/script.sh'

Sfortunatamente, ogni volta che corro ssh newton@host.com 'sudo /var/www/script.sh'da Cygwin torno indietro. Ho anche provato ad aggiungere -t -tma poi mi richiede la password.

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

Questo non è specifico per Cygwin; Vedo lo stesso problema usando ssh example.com sudo echo helloda un sistema Linux a un altro. Ho aggiornato il tuo titolo di conseguenza. Ho anche segnalato la tua domanda di migrazione al sito Unix.
Keith Thompson,

Risposte:


10

È necessario disporre di un terminale disponibile per l'esecuzione in sudomodo che possa richiedere la password. Se si passa un comando a ssh, si presume che il comando non abbia bisogno di un terminale e non lo crei, a meno che non si passi -t. Vedere SSH all'interno di SSH non riesce con "stdin: non è un tty" per una spiegazione più dettagliata.

Se non riesci a inserire la password anche con -t, è possibile che il tuo problema sia dovuto a Windows. La console di Windows non emula completamente un terminale unix; potrebbero esserci delle difficoltà per le applicazioni Cygwin nell'emulare correttamente un terminale in queste circostanze (non ne sono sicuro, nota). Se questo è il problema, esegui sshall'interno di un emulatore di terminale come Console2 o Mintty (incluso nella distribuzione Cygwin) - vedi Il modo migliore per usare una shell con Cygwin in Windows 7 .

Se ti aspettavi che la passphrase SSH sostituisse la tua password per l'autenticazione su sudo, ciò non accadrà. Sudo richiede una password (a meno che non si aggiunga il NOPASSWDtag nel file sudoers). Si noti che è necessario disporre di un terminale, anche con NOPASSWD, se l' requirettyopzione è impostata nel file sudoers.

Se si desidera accedere senza password all'account di root (che generalmente non è una buona idea dal punto di vista della sicurezza), utilizzare SSH per raggiungere l'account di root, preferibilmente in due hop. Vedere SSH all'interno di SSH non riesce con "stdin: non è un tty" (con root@host.comfor otheruser@computertwo.com).


3

Vogliamo abilitare nessuna password per il comando / binario nodejs.

Modifica visudo

sudo visudo

Con la seguente riga per abilitare nessuna password per un comando. Passa più comandi con virgole e spazio dopo ogni comando.

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

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

inserisci qui la descrizione dell'immagine


1

Modifica il file di configurazione di ssh-server e aggiungi in fondo:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes

Non funziona: service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
kiltek il

Potrebbe essere necessario cambiarlo inMatch User newton
ILMostro_7,

1
No significa che non puoi scrivere Usernel tuo file sshd, perché quella opzione di configurazione non esiste. (almeno questo è il caso sul mio sistema Ubuntu 16.04)
kiltek,

Dalle pagine man: "MatchIntroduce un blocco condizionale. Se tutti i criteri sulla riga Match sono soddisfatti, le parole chiave sulle righe seguenti hanno la precedenza su quelle impostate nella sezione globale del file di configurazione, fino a quando non è disponibile un'altra riga Match o la fine del file. Gli argomenti da abbinare sono una o più coppie di criteri. I criteri disponibili sono Utente, Gruppo, Host e Indirizzo. I modelli di corrispondenza possono essere costituiti da singole voci o elenchi separati da virgola e possono utilizzare il carattere jolly e la negazione operatori descritti nella sezione PATTERNSse di ssh_config (5). "
ILMostro_7,

Non vedo un Matchblocco nella tua risposta ...
Kiltek,

0

Ho riscontrato questo errore quando ho commesso un errore in / etc / sudoers. Invece di specificare più comandi come questo:

NOPASSWD= /bin/x, /bin/y

Ho salvato come:

NOPASSWD= /bin/x /bin/y

cioè senza la virgola. Ora ricevo il messaggio no tty present quando provo

ssh host 'sudo x'

0

Non so se è correlato ma quando ho avuto '... NOPASSWD: /xyz/script.shl' nel file sudoers, ho ricevuto quel messaggio di errore fino a quando non ho incluso la #!/bin/shellnameriga nella parte superiore del /xyz/script.shlfile.


0

commentare i parametri seguenti nel file / etc / sudoers mi ha aiutato.

# 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

---> commentare i parametri come segue

#Defaults    requiretty
#Defaults   !visiblepw
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.