GNU/Linux >> Tutoriels Linux >  >> Linux

Comment savoir s'il s'exécute dans une console Linux par rapport à une session ssh ?

ttyname vous indiquera le nom du terminal connecté à un descripteur de fichier donné ; par exemple, ttyname(0) vous indiquera le terminal de stdin.

Cela échouera bien sûr si l'entrée ou la sortie est redirigée.

Sauf cela, vous pouvez vérifier diverses variables d'environnement (SSH_CONNECTION , SSH_CLIENT , REMOTEHOST , DISPLAY , SESSIONNAME ). Wireshark a une logique pour détecter s'il est exécuté à distance afin qu'il ne capture pas le trafic réseau qu'il génère; vous pourriez être intéressé par la logique que sa fonction get_conn_cfilter utilise pour implémenter ceci.


La vérification de la valeur de retour de ttyname(3) par rapport à votre stdin devrait vous donner le nom du terminal qui alimente l'entrée de votre processus.

Ce sera /dev/console si le programme est exécuté sur la console (et n'a pas son entrée redirigée). Vous pouvez également vérifier stdout pour voir s'il est connecté à /dev/console - voir ce qui correspond le mieux à votre scénario d'utilisation.


Je considérerais les variables d'environnement comme un signe raisonnable de ce qui se passe. Je ne sais pas quelle API C vous voudriez pour cela, mais je suis sûr qu'il en existe une.

Par exemple, à la fois le SSH_CLIENT ou SSH_CONNECTION les variables d'environnement sont définies sur ma machine quel que soit le client SSH utilisé.

Il peut être utile de vérifier à quel point ceux-ci sont universels en fonction du serveur SSH exécuté sur la machine.


En fonction de votre inquiétude quant à l'usurpation d'identité, une vérification simple consisterait à vérifier la présence/l'absence des variables d'environnement SSH_CLIENT et SSH_CONNECTION, auquel cas vous voudriez le getenv fonction.


Linux
  1. Variables d'environnement Linux :comment lire et définir sur un VPS Linux

  2. Comment changer le port SSH sous Linux

  3. Comment définir/créer des variables d'environnement et de shell sous Linux

  4. Comment tuer les processus en cours d'exécution sous Linux

  5. Exemples de commandes d'exportation Linux (Comment définir des variables d'environnement)

Comment créer un alias SSH sous Linux

Comment définir/annuler les variables d'environnement sous Linux

Comment définir et supprimer des variables d'environnement sous Linux

Comment déconnecter un utilisateur de SSH sous Linux

Variables d'environnement Linux

Comment SSH au serveur via Linux