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
oSSH_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?)