SSH 转发隧道目标可以根据每个用户进行限制吗?
示例:客户端“a”只能将隧道转发到 192.168.10.2:22。客户端“b”只能将隧道转发到 192.168.11.2:22。
更新
我希望根据每个用户或每个组来限制以下隧道命令:
要求:
- client_a 可以将隧道转发到 192.168.10.*,独占。
- client_b 可以将隧道转发到 192.168.11.*,独占。
有效的隧道命令(针对 client_a):
ssh -f client_a@gateway -L localhost:2222:192.168.10.2:22 -N
无效的隧道命令(对于 client_a) - 网关上的 SSH 连接应立即关闭。
ssh -f client_a@gateway -L localhost:2222:192.168.11.2:22 -N
有效的隧道命令(针对 client_b):
ssh -f client_b@gateway -L localhost:2222:192.168.11.2:22 -N
无效的隧道命令(对于 client_b) - 网关上的 SSH 连接应立即关闭。
ssh -f client_b@gateway -L localhost:2222:192.168.10.2:22 -N
可以通过修改sshd_配置?
答案1
假设它是现代 sshd 版本,/etc/ssh/sshd_config支持Match
和PermitOpen
指令,可以组合使用来限制客户端指定的目标设置本地转发选项
许可证开放
指定允许 TCP 端口转发的目标。转发规范必须采用以下形式之一:PermitOpen host:port PermitOpen IPv4_addr:port PermitOpen [IPv6_addr]:port
可以通过用空格分隔来指定多个转发。可以使用“any”参数来删除所有限制并允许任何转发请求。默认情况下,所有端口转发请求均被允许。 https://www.freebsd.org/cgi/man.cgi?sshd_config(5)
所以这样的事情应该有效......
Match User client_a
PermitOpen none
PermitOpen 192.168.10.2:22
Match User client_b
PermitOpen none
PermitOpen 192.168.11.2:22
我不能 100% 确定这些 PermitOpens..( By default all port forwarding requests are permitted.
) 的顺序,因此您可能必须反转它们,或者Permit none
在适当的位置添加以阻止不匹配的转发。
或者可能像这样;
Match User client_a
PermitOpen 192.168.10.2:22
Match User client_b
PermitOpen 192.168.11.2:22
Match User client_a client_b
PermitOpen none