GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo detectar si el Shell está controlado desde Ssh?

Quiero detectar desde un script de shell (más específicamente .zshrc) si se controla a través de SSH. Probé la variable HOST pero siempre es el nombre de la computadora que ejecuta el shell. ¿Puedo acceder al nombre de host de donde proviene la sesión SSH? Comparar los dos resolvería mi problema.

Cada vez que inicio sesión, hay un mensaje que indica la hora y el host del último inicio de sesión:

Last login: Fri Mar 18 23:07:28 CET 2011 from max on pts/1
Last login: Fri Mar 18 23:11:56 2011 from max

Esto significa que el servidor tiene esta información.

Respuesta aceptada:

Estos son los criterios que utilizo en mi ~/.profile :

  • Si una de las variables SSH_CLIENT o SSH_TTY está definido, es una sesión ssh.
  • Si el nombre del proceso principal del shell de inicio de sesión es sshd , es una sesión ssh.
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
  SESSION_TYPE=remote/ssh
# many other tests omitted
else
  case $(ps -o comm= -p $PPID) in
    sshd|*/sshd) SESSION_TYPE=remote/ssh;;
  esac
fi

(¿Por qué querría probar esto en su configuración de shell en lugar de en el inicio de su sesión?)


Linux
  1. Cómo usar SSH en Linux desde Android

  2. ¿Cómo recuperar la clave pública de una clave privada Ssh?

  3. Cómo ejecutar scripts de Python desde shell

  4. Cómo cambiar el shell predeterminado en Linux

  5. Codificación a base32 desde el shell

Telnet frente a SSH:¿En qué se diferencia SSH de Telnet?

Conceptos básicos de Linux:cómo crear e instalar claves SSH en el Shell

Cómo cambiar el shell predeterminado en el sistema Linux

Cómo cambiar el puerto SSH en CentOS

¿Cómo comprobar si stdin es/dev/null desde el shell?

SSH:cómo incluir el comando -t en el archivo ~/.ssh/config