Correction : Le pseudo-terminal ne sera pas attribué car l'entrée standard n'est pas un terminal

Découvrez comment résoudre l'erreur courante "pseudo-terminal will not be allocated" en SSH, notamment via des commandes adaptées et des astuces de dépannage efficaces pour vos scripts.
Dans la plupart des cas, vous recevrez un message d'erreur déroutant "pseudo-terminal will not be allocated because stdin is not a terminal" uniquement lorsque vous exécutez une sorte de commande SSH depuis un script. Si vous exécutez la même commande depuis la ligne de commande, alors cela pourrait fonctionner parfaitement bien.
Avant d'aller plus loin, assurez-vous d'avoir ajouté votre clé publique à l'agent SSH, puis essayez d'utiliser ssh à nouveau. Il se peut que vous ayez simplement manqué une clé. D'autre part, si cela ne fonctionne pas, vous devrez faire un peu de dépannage dans votre script.
Méthode 1 : Forcer & Désactiver l'allocation des pseudo-tty
Il existe une paire d'options en ligne de commande qui pourraient résoudre rapidement le problème pour vous. Essayez ssh -t -t -R suivi du reste de ce que vous essayiez de vous connecter pour forcer l'allocation du pseudo-terminal. Par exemple, supposons que vous alliez utiliser ssh -p 80 astucestechnologiques@ssh.example.com pour vous connecter à votre compte sur example.com, qui bien sûr est un faux nom pour la documentation qui n'existe pas.
Essayez d'exécuter par exemple ssh -t -t -R -p 80 astucestechnologiques@ssh.example.com et voyez si cela résout le problème. Vous devrez bien sûr remplacer le nom par votre compte et votre nom d'hôte actuels afin de vous connecter avec succès au système. Cela force l'allocation d'un terminal, donc vous ne devriez pas voir l'erreur de pseudo-terminal qui ne sera pas alloué parce que stdin n'est pas un terminal.
D'autre part, vous pourriez simplement vous retrouver avec une chaîne constante de messages d'erreur. Certains utilisateurs ont fait remarquer que cela pouvait être jugé amusant.
C'est certainement frustrant toutefois, alors utilisez Ctrl+C pour arrêter le processus.
Vous pouvez essayer soit d'utiliser un seul commutateur -t ou d'augmenter le nombre. Si cela ne fonctionne pas, remplacez tout commutateur -t par un commutateur -T dans la commande, par exemple ssh -T -R -p 80 astucestechnologiques@ssh.example.com et voyez si cela fonctionne.
Cette méthode désactive complètement le processus d'allocation du pseudo-terminal, donc cela pourrait fonctionner dans les cas où le forcer ne fonctionne pas. Bien sûr, rien de tout cela ne devrait poser de problème depuis la ligne de commande, mais assurez-vous de noter l'option qui fonctionne depuis votre script afin que vous puissiez l'utiliser dans de futurs scripts que vous devrez exécuter pour accéder au serveur en question.
Puisque la commande ssh a donné à ces deux options opposées des noms similaires, rappelez-vous que -t force l'allocation des pseudo-terminaux tandis que -T la désactive. Ces options sont sensibles à la casse, et elles sont souvent nécessaires à l'intérieur des scripts car ssh nécessite un terminal TTY traditionnel pour fonctionner. Naturellement, dans votre cas, vous utiliseriez votre émulateur de terminal à cette fin.
Méthode 2 : Utiliser sshpass
Certaines personnes pourraient trouver que leurs scripts fonctionnent mieux avec la commande sshpass, qui n'est pas incluse par défaut. Vous pouvez toujours l'installer avec sudo apt-get install sshpass ou sudo yum install sshpass si vous préférez l'essayer ou parce que vous en avez besoin pour votre cas d'utilisation spécifique.
Si vous ne l'utilisez pas déjà, alors vous n'en avez probablement pas besoin. Néanmoins, vous pouvez utiliser les mêmes techniques pour surprendre les messages d'erreur liés à l'allocation du pseudo-terminal dans ce genre d'environnement également.
Par exemple, utilisez sshpass -p motdepasse ssh -T astucestechnologiques@ssh.example.com pour forcer le système à fonctionner depuis votre script.
Méthode 3 : Corriger les erreurs de gestion des tâches
Occasionnellement, vous pourriez obtenir un autre message d'erreur même après avoir corrigé tout cela. Si vous recevez un avertissement indiquant qu'il n'y a pas d'accès à tty et que vous êtes ensuite rappelé qu'il n'y a pas de contrôle des tâches dans votre shell, vous devriez pouvoir travailler de manière relativement normale.
Cette erreur est causée par quelque chose d'irrégulier sur le serveur distant lié à csh, tcsh ou peut-être même l'Almquist ou un autre shell. Vous ne l'avez peut-être pas remarqué parce que vous receviez d'autres messages d'erreur, mais tant que vous ne voyez pas d'autres concernant les pseudo-terminaux, cela devrait être possible de continuer relativement comme vous le feriez normalement.
Vous ne voudrez peut-être pas essayer d'utiliser Ctrl+Z dans ce cas pour arrêter les processus, car il se peut qu'il n'y ait aucun moyen de les redémarrer. Si vous recevez un message d'erreur indiquant qu'il y a des tâches arrêtées lorsque vous quittez, alors vous ne serez pas autorisé à vous déconnecter.
Utilisez les commandes ps et kill pour fermer toutes les tâches que vous ne pouvez pas arrêter, en supposant que cela ne vous dérange pas de perdre du travail dans le processus. Vous pourrez maintenant sortir.
Maintenant que tu as fini de lire Correction : Le pseudo-terminal ne sera pas attribué car l'entrée standard n'est pas un terminal, 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!
Laisser un commentaire