Řešení 1:
Můžete použít výstup příkazu "w" nebo "who". Když se připojíte přes ssh, zobrazí vaši zdrojovou IP.
Řešení 2:
Zde je skvělá odpověď, kterou jsem našel na unix.stackexchange:
- Pokud je jedna z proměnných
SSH_CLIENT
neboSSH_TTY
je definováno, je to relace ssh. - Rodičovský proces přihlašovacího shellu lze zkontrolovat pomocí
ps -o comm= -p $PPID
. Pokud jesshd
, je to relace 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
Řešení 3:
Můžete přidat SSH_*
až env_keep
v sudoers
aby to bylo možné zjistit při přepnutí na jiného uživatele.
Řešení 4:
Pokud chcete vědět, zda je váš bash shell přímo podřízeným procesem sshd (nikoli n>1 vrstev hluboko), můžete
cat /proc/$PPID/status | hlava -1 | řez -f2
měl by vám dát sshd
nebo co je název nadřazeného procesu vašeho aktuálního shellu.
Řešení 5:
Myslím, že chcete přehodnotit způsob, jakým o problému uvažujete. Otázka nezní "jsem přihlášen přes SSH, protože chci vypnout určité příkazy." Je to "jsem přihlášen do konzole, protože pak povolím určité příkazy?"
Jak v Linuxu zjistit, jaké síťové rozhraní a zdrojová IP adresa se používá pro cestu ke konkrétnímu cílovému hostiteli?
Smazat celý /var/log?