sudo sur ssh: aucun tty présent et aucun programme askpass spécifié

15

Je continue à recevoir cette erreur et j'ai essayé plusieurs façons discutées en ligne pour résoudre ce problème et aucune ne fonctionne pour moi. J'ai configuré des clés SSH, donc lorsque je l'exécute 'ssh [email protected]', je me connecte automatiquement, j'ai également défini cet utilisateur visudopour qu'il soit, 'newton ALL=(ALL:ALL) ALL' puis j'ai également essayé d'ajouter'newton ALL=NOPASSWD: /var/www/script.sh'

Malheureusement, chaque fois que je ssh [email protected] 'sudo /var/www/script.sh'fuis Cygwin, je reviens. J'ai également essayé d'ajouter -t -tmais il me demande ensuite le mot de passe.

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
la source
Ce n'est pas spécifique à Cygwin; Je vois le même problème lors de l'utilisation ssh example.com sudo echo hellod'un système Linux à un autre. J'ai mis à jour votre titre en conséquence. J'ai également signalé votre question pour la migration vers le site Unix.
Keith Thompson

Réponses:

10

Vous devez avoir un terminal disponible pour fonctionner sudoafin qu'il puisse vous demander le mot de passe. Si vous passez une commande à ssh, cela suppose que la commande n'a pas besoin d'un terminal et n'en crée pas, sauf si vous passez -t. Voir SSH dans SSH échoue avec "stdin: n'est pas un tty" pour une explication plus détaillée.

Si vous ne pouvez pas saisir le mot de passe même avec -t, il est possible que votre problème soit dû à Windows. La console Windows n'émule pas complètement un terminal Unix; il peut y avoir des difficultés pour les applications Cygwin à émuler correctement un terminal dans ces circonstances (je ne suis pas sûr de cela, note). Si tel est le problème, exécutez-le sshdans un émulateur de terminal tel que Console2 ou Mintty (inclus dans la distribution Cygwin) - voir Meilleure façon d'utiliser un shell avec Cygwin dans Windows 7 .

Si vous vous attendiez à ce que la phrase de passe SSH remplace votre mot de passe pour l'authentification à sudo, cela ne se produira pas. Sudo nécessite un mot de passe (sauf si vous ajoutez la NOPASSWDbalise dans le fichier sudoers). Notez que vous devez toujours avoir un terminal, même avec NOPASSWD, si l' requirettyoption est définie dans le fichier sudoers.

Si vous souhaitez vous connecter sans mot de passe au compte root (ce qui n'est généralement pas une bonne idée du point de vue de la sécurité), utilisez SSH pour atteindre le compte root, de préférence en deux tronçons. Voir SSH dans SSH échoue avec "stdin: n'est pas un tty" (avec [email protected]pour [email protected]).

Gilles 'SO- arrête d'être méchant'
la source
3

Disons que vous voulez activer aucun mot de passe pour la commande nodejs / binaire.

Modifier visudo

sudo visudo

Avec la ligne suivante pour activer aucun mot de passe pour une commande. Pass est plusieurs commandes avec des virgules et un espace après chaque commande.

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

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

entrez la description de l'image ici

Gajen Sunthara
la source
1

Modifiez le fichier de configuration du serveur ssh et ajoutez-le en bas:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes
ILMostro_7
la source
Ne fonctionne pas: service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
kiltek
Match User newton
Pourrait
1
Non, cela signifie que vous ne pouvez pas écrire Userdans votre fichier sshd, car cette option de configuration n'existe pas. (au moins c'est le cas sur mon système Ubuntu 16.04)
kiltek
A partir des pages de manuel: "MatchIntroduit un bloc conditionnel. Si tous les critères de la ligne Match sont satisfaits, les mots-clés des lignes suivantes remplacent ceux définis dans la section globale du fichier de configuration, jusqu'à ce qu'une autre ligne Match ou la fin du fichier. Les arguments à faire correspondre sont une ou plusieurs paires critères-modèles. Les critères disponibles sont Utilisateur, Groupe, Hôte et Adresse. Les modèles de correspondance peuvent consister en des entrées uniques ou des listes séparées par des virgules et peuvent utiliser le caractère générique et la négation opérateurs décrits dans la section PATTERNSsection de ssh_config (5). "
ILMostro_7
Je ne vois pas de Matchbloc dans votre réponse ...
kiltek
0

J'ai rencontré cette erreur lorsque j'ai fait une erreur dans / etc / sudoers. Au lieu de spécifier plusieurs commandes comme celle-ci:

NOPASSWD= /bin/x, /bin/y

J'ai enregistré en tant que:

NOPASSWD= /bin/x /bin/y

c'est à dire sans la virgule. Maintenant, je reçois le message no tty present lorsque j'essaie

ssh host 'sudo x'
ottodidakt
la source
0

Je ne sais pas si c'est lié mais quand j'avais '... NOPASSWD: /xyz/script.shl' dans le fichier sudoers, j'ai reçu ce message d'erreur jusqu'à ce que j'inclue la #!/bin/shellnameligne en haut du /xyz/script.shlfichier.

LeeH
la source
0

commenter les paramètres ci-dessous dans le fichier / etc / sudoers m'a aidé.

# 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

---> commentez les paramètres comme suit

#Defaults    requiretty
#Defaults   !visiblepw
Santosh Garole
la source