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

如何配置仅允许从指定子域名通过SSH登录VPS?

仅允许特定子域名SSH连接VPS的实现方案

首先明确两种不同需求的实现方式,以及你之前配置失败的原因:

为什么你之前的配置会失败?

AllowUsers *@ssh.example.com 这条规则限制的是发起连接的客户端主机名(即客户端IP的反向解析结果),而非你用来连接的VPS域名。如果你的客户端IP反向解析不匹配ssh.example.com,SSH服务会直接拒绝连接,这就是你需要救援模式恢复的原因。


需求1:仅允许来自ssh.example.com指向的IP的客户端连接

如果你想让只有某个固定IP(对应ssh.example.com)的设备能SSH连接VPS,可按以下步骤配置:

  1. 备份配置文件:

    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    
  2. 修改sshd_config:
    用编辑器打开文件(如vim /etc/ssh/sshd_config),添加以下规则(二选一):

    • 若客户端IP的反向解析已指向ssh.example.com:
      AllowUsers *@ssh.example.com
      
    • 若无法设置反向解析,直接用客户端IP:
      AllowUsers *@192.168.1.100  # 替换为你的客户端公网IP
      

    建议指定具体SSH用户(如AllowUsers yourname@ssh.example.com),缩小权限范围,降低配置错误风险。

  3. 验证配置并重启服务:

    • 先检查配置是否合法:sshd -t
    • 无错误后重启SSH服务:systemctl restart sshd
    • 关键:重启前保留当前SSH连接窗口,同时新开一个窗口测试连接,避免配置错误导致断连。

需求2:仅允许通过输入ssh.example.com作为目标地址连接

如果你的VPS只有一个公网IP,无法实现这个需求——因为所有域名最终都会解析到同一个IP,TCP连接仅传递IP和端口信息,SSH服务无法区分用户是通过哪个域名发起的连接。

若你的VPS有多个公网IP,可按以下方式实现:

  1. 将ssh.example.com指向其中一个IP(如1.2.3.4),主域名指向另一个IP(如1.2.3.5)。
  2. 修改sshd_config,让SSH服务仅监听ssh.example.com对应的IP:
    ListenAddress 1.2.3.4
    
  3. 重启SSH服务后,用户通过主域名或其他IP连接时,会因SSH服务未监听对应IP而失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:40:04