PermitOpen 校验的是 SOCKS 客户端提供的目标名称
按客户端请求的主机名和端口匹配受限的 SSH SOCKS 目标,而不是假定 DNS 别名与数字地址等价。
现有的 SSH 转发账号可以限制其 SOCKS 客户端使用的目标对。服务端的一个片段可以放行一个具名服务:
Match User proxyuser
PermitOpen api.example.net:443
请把它与该账号现有的认证和转发策略结合起来。PermitOpen 本身并不授予转发权限,也不会关闭 shell 访问。
OpenSSH 比较客户端提供的目标名称时,不会为该比较做地址查询。除了文档中说明的通配符形式,该值并不是通用的主机名模式。
这对 SOCKS5 很重要。客户端发送 api.example.net 和端口 443,才可能匹配这一对。客户端在本地解析同一名称后发送数字 IP,提供的就是另一个目标字符串。解析到同一地址的别名同样不同。
让客户端的本地解析与代理端解析模式与预期规则保持一致。被允许的主机名之后如何解析,仍然决定服务器连接到何处;该设置并不是对所有私有地址都生效的、感知 DNS 的禁令。
同时检查针对具体密钥的限制以及其他适用的服务端设置,因为任何进一步的转发禁令仍可能拒绝该请求。