当前位置: 首页 > ds >正文

限制 SSH 访问仅允许特定 IP 连接

要限制 SSH 访问仅允许特定 IP 连接,可以通过以下 4 种方法实现(推荐按优先级选择):


方法 1:使用 /etc/hosts.allow/etc/hosts.deny(最简单)

# 编辑允许规则(需 root 权限)
sudo vim /etc/hosts.allow

添加内容(支持 IP 或网段):

sshd: 192.168.1.100, 203.0.113.45/32
# 编辑拒绝规则
sudo vim /etc/hosts.deny

添加内容:

sshd: ALL

生效
无需重启服务,规则即时生效。


方法 2:配置 SSH 的 AllowUsersAllowGroups(精准控制)

sudo vim /etc/ssh/sshd_config

添加或修改以下行(支持通配符):

AllowUsers *@192.168.1.100 *@203.0.113.45
# 或限制用户组
AllowGroups admin@192.168.1.0/24

生效
重启 SSH 服务:

sudo systemctl restart sshd

方法 3:使用防火墙(iptables/nftables)

iptables 规则示例
# 清空现有规则(谨慎操作)
sudo iptables -F# 允许指定 IP 访问 22 端口
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP# 保存规则(根据系统选择)
sudo iptables-save > /etc/iptables/rules.v4  # Debian/Ubuntu
sudo service iptables save                   # CentOS/RHEL
nftables 规则示例
sudo nft add table ip ssh_filter
sudo nft add chain ip ssh_filter input { type filter hook input priority 0 \; }
sudo nft add rule ip ssh_filter input tcp dport 22 ip saddr 192.168.1.100 accept
sudo nft add rule ip ssh_filter input tcp dport 22 drop

方法 4:TCP Wrappers(传统方法,部分系统已弃用)

# 编辑 /etc/hosts.allow(同方法1)
sudo vim /etc/hosts.allow
sshd: 192.168.1.100

验证配置

  1. 测试连接
    ssh user@服务器IP -v  # 从非允许IP尝试会显示被拒绝
    
  2. 查看日志
    sudo tail -f /var/log/auth.log  # Debian/Ubuntu
    sudo tail -f /var/log/secure   # CentOS/RHEL
    

注意事项

  1. 备份配置:修改前备份相关文件(如 sshd_config)。
  2. 保留应急通道:确保至少有一个 IP 能被允许,避免锁死服务器。
  3. 动态 IP 用户:若需支持动态 IP,可结合 DDNS 或 VPN 方案。

选择最适合你环境的方法,通常 方法1+方法2 组合使用既简单又安全。

http://www.xdnf.cn/news/9106.html

相关文章:

  • 基于线性回归的短期预测
  • SAST国标分析︱灵脉AI深度兼容GB/T 34943/34944-2017源代码漏洞测试规范
  • LINUX526 回顾 配置ssh rsync定时备份(未完成)
  • OpenCV CUDA模块图像过滤------创建一个 Scharr 滤波器函数createScharrFilter()
  • 第12次04 :首页展示用户名
  • 数据仓库维度建模详细过程
  • 频繁报FTPResponse 421 received.Server closed connection
  • 1. 数据结构
  • 《软件工程》第 8 章 - 人机交互设计
  • QML设计登录界面
  • 基于FPGA的IIC多通道选择器(IIC Switch/Bridge)
  • Qt popup窗口半透明背景
  • mac for vscode集成的源代码管理 撤销和删除文件报错Permission denied
  • 【Macos】安装前端环境rust+node环境
  • 从界面设计到设备互联:基于Qt的ARM Linux自动化控制面板开发全解析
  • 【图像处理基石】什么是色彩模式?
  • 深度学习在建筑物提取中的应用综述
  • 【Qt开发】输入类控件
  • C语言初阶--结构体
  • 高性能排行榜系统架构实战
  • 解码词向量:让AI语言模型更透明
  • Leetcode 3563. Lexicographically Smallest String After Adjacent Removals
  • 基于Flask实现当当网书籍数据分析大屏
  • 清除谷歌浏览器中的“您的浏览器由所属组织/贵单位管理”
  • 《软件工程》第 2 章 -UML 与 RUP 统一过程
  • GitHub Page填写域名显示被占用
  • (转)Docker与K8S的区别
  • Java中Map集合的遍历方式详解
  • 【监控】PromQL 查询语言
  • vscode连接的linux服务器,上传项目至github