可以将通过 SSH 使用的命令列入黑名单吗?

可以将通过 SSH 使用的命令列入黑名单吗?

有谁知道是否有办法阻止通过 SSH 执行特定命令?

例如,假设我不希望某人能够运行firefoxmatlab通过 SSH,但如果他们位于计算机本地,那么应该没问题。

我问这个问题主要是因为我有一个软件,其许可协议没有远程使用政策。

答案1

变化亨特·S·汤普森的回答

在 shell 启动文件中:

if [ -n "$SSH_CLIENT" ]; then
   alias matlab='echo "restricted to local users only, sorry"'
   alias firefox='echo "restricted to local users only, sorry"'
fi

这并不能阻止任何人绕过这些别名,因此人们可以为每个受限制的软件创建一个 shell 脚本。

例如:/usr/local/bin/matlab

#!/bin/sh

if [ -n "$SSH_CLIENT" ]; then
   echo 'restricted to local users only, sorry' >&2
   exit 1
fi

exec /real/path/to/matlab

这不会阻止用户取消设置其SSH_CLIENT环境变量,或直接执行实际matlab程序。

答案2

将其添加到您的 中~/.bashrc,这将确保只有本地人tty才能运行该软件。

当用户通过 via 登录时ssh,服务器会alias在命令中添加一个 ,该命令只会回显“受限制。只能在本地运行。”

whichtty=$( ps hotty $$ | grep pts )

if [ $? -eq 0 ]; then
    alias <software_name>='echo Restricted. Can only be run locally.'
else
    echo 
fi

SSH 会话将位于伪终端从站 ( pts) 上,如列中所示TTY,但并非所有pts连接都是SSH会话。例如,创建伪终端设备(例如xterm或 )的程序screen将显示为pts。因此,此脚本的缺点是您无法从本地xtermscreen.

您必须从启动器运行该软件。

相关内容