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

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

L'erreur "no tty present and no askpass program specified" en SSH peut résulter d'une mauvaise configuration ou de l'absence d'un terminal virtuel. Découvrez comment la résoudre efficacement.

La ligne de sortie indiquant "no tty present and no askpass program specified" est l'un de ces messages d'erreur ssh qui n'est pas très utile car il ne va pas vraiment au cœur du problème. Plus probablement, vous travaillez réellement avec un TTY valide quand vous voyez ce message, et vous avez probablement déjà saisi votre mot de passe sudo via ssh sans problème. Il est plus que probable que vous soyez confronté à une erreur de syntaxe, mais le message ne traite pas ce fait directement.

Étant donné qu'il s'agit d'un problème associé à ssh lui-même, vous pourrez probablement reproduire le problème sur Linux, FreeBSD, macOS et les services Unix de Cygwin sur Microsoft Windows. Heureusement, la solution devrait être à peu près 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 probablement pas compte. Il pourrait encore essayer de chercher un émulateur de terminal TTY malgré le fait que vous soyez dans une fenêtre de ligne de commande. Essayez de reproduire l'erreur pour tester cela. Nous avons configuré une machine virtuelle pour servir d'exemple et exécuté ssh user@linuxtest.example ‘sudo /var/mail/startup.sh’ en guise de test. Naturellement, vous voudrez modifier la commande et la ligne ssh pour qu'elles correspondent à ce que vous essayez de faire.

Assurez-vous que vous vous connectez au serveur auquel vous pensiez vous connecter. 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 probable que si vous le recevez encore, vous le verrez trois fois et peut-être même que l'on vous demandera de saisir votre mot de passe comme 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 à allouer un TTY virtuel pour lui-même et à prétendre qu'il fonctionne à l'intérieur d'un véritable terminal. Vous n'avez pas à changer quoi que ce soit d'autre dans votre commande. Il vous suffit d'ajouter l'option -t après les lettres ssh, puis de garder l'hôte et la commande passée identiques. Vous voudrez également garder cela à l'esprit si vous devez jamais exécuter ssh dans la dernière partie de votre commande.

Par exemple, si vous receviez 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 garder l'option -t après le premier ssh pour éviter cela. Notez que si vous modifiez 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 au lieu d'un script, vous pouvez supprimer le -t puisque vous n'auriez pas besoin d'allouer un terminal pour cela.

Méthode 2 : Patcher le Fichier visudo

Vous pourriez également avoir 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 voudrez jamais modifier ce fichier d'une autre manière. Vous devriez trouver une ligne qui comporte ALL = NOPASSWD suivie des types de commandes pour lesquelles vous n'avez pas besoin de saisir le mot de passe de l'administrateur pour les exécuter.

Chaque commande individuelle doit se terminer par une virgule, sauf pour la dernière de la ligne. Ainsi, si vous aviez quelque chose comme /sbin/poweroff /sbin/start /sbin/stop, cela sera traité 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 sauvegardez le fichier avant de vérifier si l'erreur est toujours reproductible.

Si vous avez encore l'erreur même après cela et après avoir redémarré le service, essayez la commande suivante dans l'image ci-dessous et assurez-vous que la ligne PermitTTY contient le mot oui 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 de reproduire à nouveau le message d'erreur.

Maintenant que tu as fini de lire Corrigé : 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 : Patcher le Fichier visudo

Laisser un commentaire

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

Go up