Solución 1:
Puede usar la salida del comando "w" o "who". Cuando te conectes a través de ssh, mostrarán tu IP de origen.
Solución 2:
Aquí hay una gran respuesta que encontré en unix.stackexchange:
- Si una de las variables
SSH_CLIENT
oSSH_TTY
está definido, es una sesión ssh. - El proceso principal del shell de inicio de sesión se puede verificar con
ps -o comm= -p $PPID
. Si essshd
, es una sesión ssh.
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
SESSION_TYPE=remote/ssh
else
case $(ps -o comm= -p $PPID) in
sshd|*/sshd) SESSION_TYPE=remote/ssh;;
esac
fi
Solución 3:
Podrías agregar SSH_*
a env_keep
en sudoers
para que esto pueda detectarse mientras se cambia al otro usuario.
Solución 4:
Si desea saber si bash shell es directamente un proceso secundario de sshd (no n> 1 capas de profundidad), puede
cat /proc/$PPID/estado | cabeza -1 | cortar -f2
debería darte sshd
o cualquiera que sea el nombre del proceso principal de su shell actual.
Solución 5:
Creo que quieres repensar la forma en que estás pensando en el problema. La pregunta no es "¿estoy conectado a través de SSH, porque quiero desactivar ciertos comandos". Es "Estoy conectado a la consola, porque entonces habilitaré ciertos comandos".