La manière normale de se connecter à un serveur SSH est ssh username@ip_address. Mais un utilisateur peut seulement vouloir exécuter un programme sur la machine distante. Ainsi, le nom du programme suit l'argument normal qui est ssh username@ip_address <program_name>. Par exemple ssh username@ip_address ls,. Cet argument est très bien, sauf pour les programmes interactifs (qui acceptent également l'entrée utilisateur ainsi que la fourniture de sortie), par exemple top. La sortie est
Variable d'environnement TERM non définie.
ce qui signifie qu'aucun (pseudo-) terminal n'est attaché entre les programmes sshd et top. La solution consiste à ajouter l'argument -toù la commande entière devient maintenant ssh -t username@ip_address top.
Ma question est pourquoi sshd par défaut ne peut-il pas également utiliser un pseudo-terminal pour communiquer avec des programmes non interactifs donc il n'est pas nécessaire d'ajouter l' -targument pour les programmes interactifs?
RequestTTY yes(ou force) dans votre configuration.
toppeut fonctionner en mode batch.