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

如何在SSH服务器端限制客户端隧道的目标端口?

配置sshd限制客户端隧道连接的指定端口

这在SSH中是完全可行的,核心是正确使用PermitOpen配置项(你之前误用的PermitListen是针对**远程端口转发(-R)**的,而你的场景是本地端口转发(-L),所以不适用)。以下是具体配置步骤:

1. 编辑服务器B的sshd配置文件

打开服务器B上的/etc/ssh/sshd_config文件,添加或修改PermitOpen规则:

  • 仅允许客户端转发到服务器B的localhost:8080端口:
    PermitOpen localhost:8080
    
  • 如果需要允许多个固定端口,用空格分隔:
    PermitOpen localhost:8080 localhost:9090
    
  • 若要针对特定用户限制(比如只限制用户johnson),使用Match块:
    Match User johnson
        PermitOpen localhost:8080
    

2. 重启sshd服务使配置生效

根据服务器的操作系统执行对应命令:

  • Ubuntu/Debian:
    sudo systemctl restart ssh
    
  • CentOS/RHEL:
    sudo systemctl restart sshd
    

3. 验证配置

  • 客户端A执行合法的转发命令(匹配指定端口):
    ssh -L 1234:localhost:8080 user@B
    
    此时隧道可以正常建立。
  • 客户端A尝试转发到未授权的端口:
    ssh -L 1234:localhost:8081 user@B
    
    客户端会收到错误提示:channel 0: open failed: administratively prohibited: open failed,隧道无法建立,说明配置生效。

关键注意事项

  • PermitOpen的作用是限制客户端通过SSH隧道能访问的服务器端目标地址和端口,正好对应你场景中localhost:remote-port的部分。
  • 如果未配置PermitOpen,sshd默认允许所有转发请求;一旦配置,仅允许规则内的目标。
  • 确保你修改的是服务器B的sshd_config,而非客户端A的ssh_config。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:20:04