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



Essayez Notre Instrument Pour Éliminer Les Problèmes

La ligne de sortie spécifiée par le programme no tty present et no askpass est l’un de ces messages d’erreur ssh qui n’est pas vraiment utile car il n’arrive pas vraiment à la cause du problème. Plus que probablement, vous travaillez réellement avec un TTY valide lorsque vous voyez le message et vous avez probablement dû saisir votre mot de passe sudo via ssh très bien. Vous êtes plus que probablement confronté à une erreur de syntaxe, mais le message n’aborde pas directement ce fait.



Comme il s’agit d’un problème lié à ssh lui-même, vous serez très probablement en mesure de reproduire le problème sous Linux, FreeBSD, macOS et les services Unix de Cygwin sous Microsoft Windows. Heureusement, le correctif devrait être à peu près le même sur toutes ces plates-formes.



Méthode 1: recherche d'un terminal pour ssh

Alors que vous travaillez probablement déjà depuis un terminal, ssh ne s'en rend probablement pas compte. Il peut encore essayer de rechercher un émulateur de terminal TTY en dépit du fait que vous êtes à l'intérieur d'une fenêtre d'invite de commande. Essayez de reproduire l'erreur pour tester cela. Nous avons configuré une machine virtuelle pour servir d'exemple et avons exécuté ssh user@linuxtest.example «sudo /var/mail/startup.sh» comme test. Naturellement, vous voudrez changer la commande et la ligne ssh en quelque chose qui correspond à ce que vous essayez de faire.



Vous voudrez vous assurer que vous vous connectez au serveur que vous pensiez être. Quoi qu'il en soit, vérifiez si vous recevez toujours le message d'erreur sudo: aucun tty présent et aucun programme askpass spécifié. Plus que probablement, si vous le recevez toujours, vous le verrez trois fois et vous serez peut-être même invité à entrer votre mot de passe comme vous le feriez 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 forcera ssh à s’allouer un TTY virtuel et à faire semblant qu’il s’exécute à l’intérieur d’un terminal réel. Vous n’avez rien à changer dans votre commande. Ajoutez simplement l'option -t après les lettres ssh, puis gardez l'hôte et la commande passée de la même manière. Vous voudrez également garder cela à l'esprit si vous devez exécuter ssh dans la dernière partie de votre commande.



Par exemple, si vous obtenez ce même type d'erreur lors de l'exécution d'une commande formatée comme ssh -t user@linuxtest.example «ssh user@linuxtest2.example» vous devrez conserver l'option -t après le premier ssh pour l'empêcher. Notez que si vous avez modifié ultérieurement la deuxième commande pour produire ou consommer des données, vous ne voudriez pas du tout utiliser -t. Par exemple, si vous commencez à exécuter cat au lieu d’un script, vous pouvez vider le -t car vous n’avez pas besoin d’allouer un terminal pour cela.

Méthode 2: Patcher le fichier visudo

Vous pouvez également avoir un problème de configuration qui produit cette erreur. Modifiez le fichier visudo en émettant le sudo visudo et gardez à l’esprit que vous ne voudrez jamais modifier ce fichier d’une autre manière. Vous devriez trouver une ligne contenant ALL = NOPASSWD, suivie des types de commandes dont vous n'avez pas besoin pour entrer le mot de passe de l'administrateur pour exécuter.

Chaque commande individuelle doit se terminer par une virgule, à l'exception de la dernière de la ligne. Ainsi, si vous avez quelque chose qui se lit comme / sbin / poweroff / sbin / start / sbin / stop, il traitera tout cela comme une seule commande et vous enverra 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 l'erreur persiste même après l'avoir fait et après avoir redémarré le service, essayez le commande suivante dans l'image ci-dessous et assurez-vous que la ligne PermitTTY comporte le mot yes après. S'il s'agit de la dernière ligne de votre fichier, assurez-vous qu'il y a une nouvelle ligne vierge par la suite. GNU nano exécute cette tâche automatiquement par défaut.

Vous devrez redémarrer tous les services concernés avant de réessayer de reproduire le message d’erreur.

3 minutes de lecture