You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制SSH用户在已登录状态下无法再次登录?

如何限制SSH用户在已登录状态下无法再次登录?

嗨,这个需求其实挺实用的,我来给你分享两个靠谱的实现方案,你可以根据自己的场景选:

方法一:通过SSH配置文件直接限制

这种方法不用依赖额外模块,直接修改SSH服务的配置就能搞定:

  1. 先打开SSH的主配置文件,用你习惯的编辑器就行,比如:
    sudo nano /etc/ssh/sshd_config
    
  2. 如果只想针对单个用户(比如你的用户amir),就在文件末尾添加以下配置块:
    Match User amir
        MaxSessions 1
        MaxStartups 1:0:0
    
    要是想给所有用户都加上这个限制,就直接在全局配置里把MaxSessions改成1(注意别和其他Match块冲突)。
    这里解释下:MaxSessions限制单个连接的会话数,MaxStartups则是限制该用户的并发连接尝试,后面的1:0:0表示超过1个连接后直接拒绝,不等待。
  3. 配置改完后,重启SSH服务让生效:
    # 不同系统命令可能略有不同,比如Ubuntu用service ssh restart
    sudo systemctl restart sshd
    

方法二:通过PAM模块限制登录数

这种方法是利用系统的PAM认证机制,灵活性更高,还能和其他登录方式一起限制:

  1. 先打开登录限制配置文件:
    sudo nano /etc/security/limits.conf
    
    或者你也可以在/etc/security/limits.d/目录下新建一个自定义文件,比如90-ssh-single-login.conf,这样后续管理更方便。
  2. 添加一行限制规则,比如针对用户amir:
    amir hard maxlogins 1
    
    这里hard表示强制生效的限制,maxlogins 1就是最多允许1个登录会话;如果要对所有用户生效,把amir换成*就行。
  3. 确保SSH服务会加载这个PAM规则,打开/etc/pam.d/sshd文件,检查是否有这一行:
    session required pam_limits.so
    
    要是没有就加上,然后同样重启SSH服务生效。

验证是否生效

你可以先登录一次SSH,然后再开一个终端尝试用同一个用户登录,这时候应该会直接被拒绝,或者收到类似“Too many logins for 'amir'”的提示。也可以用who或者last amir命令查看当前登录状态,确认限制已经起作用。

备注:内容来源于stack exchange,提问作者Amir Hosein Saghi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 15:57:40