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

如何在Chef中限制SSH仅允许指定IP访问?附报错解决

解决Chef配置SSH指定IP访问时的资源报错及正确配置

一、修复Chef Recipe的报错问题

报错核心原因:

  • Chef不支持在service[]资源引用中用逗号分隔多个服务名;
  • openssh-client是客户端工具,不需要后台服务,修改SSH服务端配置完全无需重启它。

修正后的Recipe代码

apt_package 'openssh-server' do
  action :upgrade
end

service 'openssh-server' do
  action [:enable, :start] # 同时启用并启动服务,原代码仅enable未确保服务运行
end

# openssh-client仅需安装,无需配置服务
apt_package 'openssh-client' do
  action :upgrade
end

cookbook_file '/etc/ssh/sshd_config' do
  source 'sshd_config'
  action :create
  mode '0600' # 必须添加,sshd_config要求严格的文件权限(所有者root,权限0600)
  notifies :restart, 'service[openssh-server]', :immediately
end

二、正确配置SSH仅允许指定IP访问

你当前的sshd_config仅设置了ListenAddress XXX.XXX.XXX.XX,这仅让SSH服务监听该IP,但无法阻止其他IP发起连接请求。要实现「仅允许指定IP访问」,需添加以下配置之一:

方案1:用AllowUsers限制来源IP

在sshd_config末尾添加:

AllowUsers *@XXX.XXX.XXX.XX

效果:允许所有系统用户从指定IP(XXX.XXX.XXX.XX)登录SSH,拒绝其他IP的所有连接请求。

方案2:用Match规则实现更细粒度控制

比如仅允许特定用户从指定IP登录,其他IP全部拒绝:

# 允许指定IP的指定用户登录
Match Address XXX.XXX.XXX.XX
    AllowUsers your_target_username

# 拒绝所有其他IP的SSH登录
Match Address !XXX.XXX.XXX.XX
    DenyUsers *

注意事项

修改sshd_config后,先在服务器上手动执行sshd -t验证配置语法是否正确,确认无报错后再重启服务,避免因配置错误导致无法SSH登录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:45:25