我有一个 18.04 Ubuntu 服务器,我用它通过 SSH 隧道绕过我所在国家/地区的互联网过滤/审查制度。为此,我使用该命令创建了多个用户adduser USERNAME --shell=/bin/false,并为他们提供了服务器 IP、服务器端口、用户名和密码(我将其称为帐户),以便他们可以通过我的服务器建立隧道。现在我想确保每个帐户一次只能在一台设备上使用。换句话说,我想防止多个设备使用同一帐户同时通过我的服务器建立隧道。
通过谷歌搜索,我找到了一个解决方案:我将以下内容放入文件中/root/checkConnections:
#! /bin/bash
limit=$1
c=$(pgrep -xcu $PAM_USER sshd)
if [[ $c -ge "$limit" ]]; then
echo "Max $limit ssh connections allowed, but you have $c."
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
然后/etc/pam.d/sshd我添加了:
session required pam_exec.so stdout /root/checkConnections 1
Run Code Online (Sandbox Code Playgroud)
这段代码运行良好,并且完全符合我的要求,但它有一个明显的缺点:当我退出 putty 时,我无法再通过 ssh 连接到服务器!换句话说,当我尝试以 root 身份 ssh 到服务器时,它立即将我踢出并不允许我登录,这就是我必须重新安装服务器的原因。我怎么解决这个问题?
注意:我对 Linux 服务器世界非常陌生,所以请简单地解释一下你的解决方案。