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

Ubuntu环境下临时禁用部署账户及限制部署窗口访问的替代方案咨询

针对部署账户访问时间限制的替代方案(Ubuntu环境)

针对你提到的Ubuntu环境下限制部署账户仅在特定窗口访问的需求,重命名.ssh文件夹确实能实现,但这个方法比较粗暴,可能会影响到部署账户下其他依赖.ssh目录的操作(比如known_hosts缓存)。这里有几个更优雅、风险更低的替代方案:

1. 利用sshd配置的Match+Time指令实现精准控制

这是最推荐的方案,直接通过sshd的原生配置实现,不需要额外脚本或工具。

配置步骤:

  1. 编辑/etc/ssh/sshd_config文件,先默认拒绝部署账户的登录权限:
    DenyUsers deploy-user
    
  2. 在文件末尾添加匹配规则,仅允许部署账户在指定时间窗口内登录:
    Match User deploy-user Time 09:00-17:00
        PermitLogin yes
    
    这里的Time参数支持更灵活的格式,比如指定工作日:Time Mon-Fri 09:00-17:00,或者具体日期范围。
  3. 重启sshd服务使配置生效:
    sudo systemctl restart sshd
    

优点:

  • 原生支持,无需额外依赖
  • 精准针对部署账户和SSH登录方式,不影响其他操作
  • 配置变更可逆,风险低

2. 用cron定时切换authorized_keys文件

如果不想修改sshd全局配置,可以通过定时任务切换部署账户的密钥文件,替代重命名整个.ssh目录。

配置步骤:

  1. 先备份部署账户正常的authorized_keys文件:
    cp /home/deploy-user/.ssh/authorized_keys /home/deploy-user/.ssh/authorized_keys.prod
    
  2. 创建一个空的密钥文件作为非窗口期的替代:
    touch /home/deploy-user/.ssh/authorized_keys.deny
    
  3. 添加cron定时任务(用crontab -e编辑部署账户的定时任务,或者用系统级cron):
    # 部署窗口开始时恢复正常密钥
    0 9 * * * cp /home/deploy-user/.ssh/authorized_keys.prod /home/deploy-user/.ssh/authorized_keys && chmod 600 /home/deploy-user/.ssh/authorized_keys
    # 部署窗口结束时替换为拒绝文件
    0 17 * * * cp /home/deploy-user/.ssh/authorized_keys.deny /home/deploy-user/.ssh/authorized_keys && chmod 600 /home/deploy-user/.ssh/authorized_keys
    

优点:

  • 仅影响密钥验证,不破坏.ssh目录结构
  • 操作简单,容易理解和维护

3. 通过PAM模块实现全局登录时间限制

如果需要限制部署账户的所有登录方式(不仅是SSH),可以用Ubuntu自带的PAMtime模块。

配置步骤:

  1. 编辑/etc/pam.d/sshd文件,添加PAM时间规则:
    account    required     pam_time.so
    
  2. 编辑/etc/security/time.conf文件,添加针对部署账户的限制:
    sshd;*;deploy-user;Al0900-1700
    
    格式说明:服务名;终端;用户名;时间规则,Al代表所有工作日(周一到周日),如果只想限制工作日可以用Wk。
  3. 重启sshd服务生效:
    sudo systemctl restart sshd
    

优点:

  • 全局控制,覆盖所有登录方式(SSH、本地登录等)
  • 系统原生模块,无需额外安装工具

4. 防火墙规则配合cron(适合固定部署IP的场景)

如果部署请求来自固定的IP地址,可以通过防火墙在非窗口期拦截该IP的SSH连接。

配置步骤(以ufw为例):

  1. 添加定时任务,部署窗口开始时允许IP访问:
    0 9 * * * sudo ufw allow from 192.168.1.100 to any port 22
    
  2. 窗口结束时删除允许规则:
    0 17 * * * sudo ufw delete allow from 192.168.1.100 to any port 22
    

优点:

  • 网络层拦截,安全性更高
  • 不影响部署账户本身的配置

内容的提问来源于stack exchange,提问作者Andre M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:21:57