sudo : pas de terminal présent et aucun programme askpass spécifié

L'erreur "no tty present and no askpass program specified" en SSH indique souvent une mauvaise configuration ; des solutions pratiques incluent l'ajout de l'option -t et la modification du fichier visudo.

Le message d’erreur "no tty present and no askpass program specified" est un de ces messages d'erreur ssh qui n'est pas vraiment utile car il ne va pas au fond du problème. Plus probablement, vous travaillez en fait avec un TTY valide lorsque vous voyez ce message, et il est fort probable que vous ayez déjà entré votre mot de passe sudo via ssh sans problème. Il est probable que vous soyez confronté à une erreur de syntaxe, mais le message ne traite pas directement de ce fait.

Étant donné que ce problème est associé à ssh lui-même, il est fort probable que vous puissiez reproduire le problème sur Linux, FreeBSD, macOS et les services Unix de Cygwin sur Microsoft Windows. Heureusement, la solution devrait être presque la même sur toutes ces plateformes.

Méthode 1 : Trouver un Terminal pour ssh

Bien que vous travailliez probablement déjà à partir d'un terminal, ssh ne s'en rend peut-être pas compte. Il essaie encore de chercher un émulateur de terminal TTY bien que vous soyez dans une fenêtre d'invite de commande. Essayez de reproduire l'erreur pour tester cela. Nous avons configuré une machine virtuelle comme exemple et avons exécuté ssh user@linuxtest.example 'sudo /var/mail/startup.sh' à titre de test. Naturellement, vous voudrez modifier la commande et la ligne ssh pour correspondre à ce que vous essayez de faire.

Assurez-vous de vous connecter au serveur que vous pensiez atteindre. Quoi qu'il en soit, vérifiez si vous recevez toujours le message d'erreur "sudo : no tty present and no askpass program specified". Il est fort probable que si vous le recevez encore, vous le verrez trois fois et peut-être même que vous serez invité à entrer votre mot de passe comme vous l'auriez fait si vous exécutiez sudo localement sur Debian ou Ubuntu.

Essayez d'ajouter -t après ssh pour corriger votre erreur de syntaxe. Neuf fois sur dix, cela contraindra ssh à allouer un TTY virtuel à lui-même et à prétendre qu'il fonctionne à l'intérieur d'un vrai terminal. Vous n'avez pas besoin de modifier quoi que ce soit d'autre dans votre commande. Ajoutez simplement l'option -t après les lettres ssh, puis gardez l'hôte et la commande passée les mêmes. Vous voudrez également garder cela à l'esprit si vous devez un jour exécuter ssh dans la seconde partie de votre commande.

Par exemple, si vous obteniez ce même genre d'erreur en exécutant une commande formatée comme ssh -t user@linuxtest.example 'ssh user@linuxtest2.example', vous devriez garder l'option -t après le premier ssh pour éviter cela. Notez que si vous changez plus tard la seconde commande pour produire ou consommer des données, vous ne voudrez pas utiliser -t du tout. Par exemple, si vous commencez à exécuter cat à la place d'un script, vous pourriez supprimer le -t puisque vous n'auriez pas besoin d'allouer un terminal pour cela.

Méthode 2 : Modifier le fichier visudo

Vous avez peut-être aussi un problème de configuration qui produit cette erreur. Modifiez le fichier visudo en émettant la commande sudo visudo, et gardez à l'esprit que vous ne devez jamais éditer ce fichier d'une autre manière. Vous devriez trouver une ligne qui présente ALL = NOPASSWD suivie des types de commandes pour lesquelles vous n'avez pas besoin d'entrer le mot de passe administrateur pour exécuter.

Chaque commande individuelle doit se terminer par une virgule sauf la dernière de la ligne. Ainsi, si vous aviez quelque chose qui se lisait comme /sbin/poweroff /sbin/start /sbin/stop, cela traitera tout ceci comme une seule commande et vous lancera l'erreur. De même, si vous manquez une commande que vous essayez d'exécuter via ssh, vous obtiendrez également cette erreur. Effectuez les ajustements nécessaires et enregistrez le fichier avant de vérifier si l'erreur est toujours reproductible.

Si vous rencontrez toujours l'erreur même après avoir effectué cela et redémarré le service, essayez la commande suivante dans l'image ci-dessous et assurez-vous que la ligne PermitTTY contient le mot "yes" après elle. Si c'est la dernière ligne de votre fichier, assurez-vous qu'il y a une nouvelle ligne vide après. GNU nano effectue cette tâche automatiquement par défaut.

Vous devrez redémarrer tous les services concernés avant d'essayer à nouveau de reproduire le message d'erreur.

Maintenant que tu as fini de lire sudo : pas de terminal présent et aucun programme askpass spécifié, nous t'invitons à explorer davantage la catégorie Linux. Tu y trouveras d'autres articles intéressants qui élargiront tes connaissances et te tiendront informé. Ne cesse pas de lire et de découvrir plus!

Index
  1. Méthode 1 : Trouver un Terminal pour ssh
  2. Méthode 2 : Modifier le fichier visudo

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Go up