You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于单IP单端口实现多Linux主机SSH接入的服务搭建方案咨询

基于单IP单端口实现多Linux主机SSH接入的服务搭建方案咨询

嘿,这个需求在多Linux主机集群管理场景里挺常见的,结合你给出的约束条件(公钥认证、唯一密钥、多并发、内网主机唯一IP),我给你几个落地性强的方案,其中首推用原生OpenSSH搭建网关服务器——不需要额外依赖,配置灵活还能满足所有需求:

方案一:OpenSSH网关跳转(最推荐)

核心思路是搭建一台公网可达的SSH网关服务器,用户通过这个网关的单IP单端口连接,根据其唯一公钥自动跳转至对应的内网主机;如果需要用户自主选择目标主机,也可以快速做适配调整。

具体配置步骤

  1. 准备网关服务器
    找一台有公网IP的Linux主机作为网关,开放你指定的端口(比如默认22,或者自定义2222),确保这台网关能访问所有内网主机的22端口。

  2. 加固网关的SSH服务
    编辑网关的/etc/ssh/sshd_config,强制启用公钥认证、禁用密码登录,提升安全性:

    PasswordAuthentication no
    PubkeyAuthentication yes
    PermitRootLogin no # 建议禁用root登录,进一步降低风险
    

    重启SSH服务生效:sudo systemctl restart sshd

  3. 绑定公钥与目标主机
    在网关服务器上创建一个专门用于跳转的用户(比如ssh-gateway),然后编辑该用户的~/.ssh/authorized_keys文件。
    对每个用户的唯一公钥,添加前缀命令实现自动跳转,格式如下:

    command="ssh -o StrictHostKeyChecking=no {目标主机用户名}@{内网主机IP}" ssh-rsa {用户公钥内容} {用户标识}
    

    举个实际例子:

    command="ssh -o StrictHostKeyChecking=no alice@192.168.1.10" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC... alice@host10
    

    这样当alice用自己的公钥连接网关时,会自动跳转到192.168.1.10的alice账户。

  4. 批量配置与密钥管理
    如果主机和用户数量多,可以写个简单脚本批量生成authorized_keys内容,避免手动重复操作。同时要严格确保每个公钥唯一对应一个用户@主机组合,定期清理失效密钥。

方案优势

  • 完全基于原生SSH,不需要额外安装软件,学习和维护成本低
  • 天然支持多并发连接,OpenSSH对几百级并发的处理完全没问题
  • 安全性高,依赖成熟的公钥认证体系,网关和内网主机都可以做防火墙限制(比如内网主机只允许网关IP访问22端口)

方案二:HAProxy反向代理(适合特殊路由需求场景)

如果需要基于更多维度做路由(比如用户自定义目标主机),可以用HAProxy做SSH反向代理,但这个方案需要客户端配合指定目标主机标识(比如在用户名里带主机信息)。

核心配置思路

  1. 在HAProxy配置文件里定义后端服务器组,包含所有内网主机的IP和22端口
  2. 配置前端监听指定的公网IP和端口,通过解析SSH连接的用户名(比如alice@host10)来匹配对应的后端主机
  3. 客户端连接时需要用类似ssh alice@host10@网关IP -p 指定端口的格式,HAProxy提取host10部分路由到对应主机

不过这个方案相比OpenSSH网关,配置复杂度更高,而且需要客户端配合修改连接格式,所以更适合有特殊路由需求的场景。

注意事项

  • 网关服务器要做好性能监控,尤其是并发连接数较高时,确保CPU、内存资源充足
  • 所有内网主机建议配置防火墙,只允许网关服务器的IP访问22端口,减少暴露面
  • 定期备份密钥配置,避免误操作导致无法访问主机

备注:内容来源于stack exchange,提问作者tuskiomi

火山引擎 最新活动