Ubuntu Server 16.04下如何限制OpenSSH Server仅监听ssh.example.com?
如何让OpenSSH仅监听指定域名对应的IP(Ubuntu 16.04)
当然可以实现这个需求!不过得先明确一个核心点:SSH服务实际监听的是服务器的IP地址,而非域名——域名只是IP地址的映射别名。所以我们的目标是让SSH只绑定到ssh.example.com对应的那个IP上,这样只有通过该域名(或直接访问对应IP)才能发起SSH连接,example.com对应的IP则无法接收SSH请求。
步骤1:确认两个域名对应的IP地址
首先要搞清楚ssh.example.com和example.com各自指向的IP,在服务器上执行以下命令:
host ssh.example.com host example.com
输出会类似这样:
ssh.example.com has address 192.168.1.100 example.com has address 192.168.1.101
记下ssh.example.com对应的IP(比如上面的192.168.1.100)。
步骤2:修改OpenSSH配置文件
Ubuntu 16.04的SSH服务配置文件位于/etc/ssh/sshd_config,用文本编辑器打开它:
sudo nano /etc/ssh/sshd_config
找到ListenAddress配置项(如果没有就手动添加)。默认情况下,这一行可能被注释或者设置为0.0.0.0(表示监听所有IP),现在把它改成ssh.example.com对应的IP:
ListenAddress 192.168.1.100
如果你的服务器同时使用IPv6,也可以添加对应的IPv6地址监听(格式为ListenAddress [2001:db8::1])。
步骤3:重启SSH服务使配置生效
保存并退出编辑器后,重启SSH服务:
sudo systemctl restart sshd # 或者Ubuntu 16.04也可以用旧的service命令: # sudo service ssh restart
步骤4:验证监听配置是否生效
执行以下命令查看SSH服务当前监听的IP:
ss -tulpn | grep sshd
如果配置成功,输出里只会显示你指定的那个IP,而不是0.0.0.0了。
注意事项
- 静态IP要求:这个方法仅适用于服务器IP是静态的情况。如果你的服务器使用动态IP,
ssh.example.com对应的IP会变化,此时配置会失效。这种场景下可以考虑用防火墙规则配合定时任务更新IP限制,但复杂度会高一些。 - 防锁仓提醒:修改配置前务必保持一个已连接的SSH会话作为备用!重启服务后先测试新的连接是否正常,确认没问题再关闭备用会话,避免把自己锁在服务器外面。
内容的提问来源于stack exchange,提问作者Henk Schurink
相关产品推荐
相关产品推荐

