按用户限制 SSH 转发隧道目标

her*_*tik 6 linux ssh

是否可以基于每个用户限制 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
Run Code Online (Sandbox Code Playgroud)

无效的隧道命令(对于 client_a) - 网关上的 SSH 连接应立即关闭。

ssh -f client_a@gateway -L localhost:2222:192.168.11.2:22 -N
Run Code Online (Sandbox Code Playgroud)

有效的隧道命令(对于 client_b):

ssh -f client_b@gateway -L localhost:2222:192.168.11.2:22 -N
Run Code Online (Sandbox Code Playgroud)

无效的隧道命令(对于 client_b) - 网关上的 SSH 连接应立即关闭。

ssh -f client_b@gateway -L localhost:2222:192.168.10.2:22 -N
Run Code Online (Sandbox Code Playgroud)

可以通过修改sshd_config来实现此限制吗?

Tom*_*Tom 3

假设它是现代 sshd 版本,/etc/ssh/sshd_config支持Match和指令,可以组合使用它们来限制客户端设置LocalForward选项PermitOpen指定的目标

\n\n
\n

PermitOpen
\n 指定允许 TCP 端口转发的目标。转发规范必须是以下形式之一:

\n\n
          PermitOpen host:port\n          PermitOpen IPv4_addr:port\n          PermitOpen [IPv6_addr]:port\n
Run Code Online (Sandbox Code Playgroud)\n\n

可以通过用白色-\n 速度分隔来指定多个前锋。\xe2\x80\x9cany\xe2\x80\x9d 参数可用于删除所有限制并允许任何转发请求。默认情况下允许所有端口转发请求。\n https://www.freebsd.org/cgi/man.cgi?sshd_config(5)

\n
\n\n

所以这样的事情应该有效......

\n\n
Match User client_a\n    PermitOpen none\n    PermitOpen 192.168.10.2:22\n\nMatch User client_b\n    PermitOpen none\n    PermitOpen 192.168.11.2:22\n
Run Code Online (Sandbox Code Playgroud)\n\n

我不是 100% 确定这些 PermitOpens 的顺序.. ( By\n default all port forwarding requests are permitted.) 所以你可能必须颠倒它们,或者添加一个Permit none在适当的点添加 来阻止不匹配的转发。

\n\n

或者可能像这样;

\n\n
Match User client_a\n    PermitOpen 192.168.10.2:22\n\nMatch User client_b\n    PermitOpen 192.168.11.2:22\n\nMatch User client_a client_b\n    PermitOpen none\n
Run Code Online (Sandbox Code Playgroud)\n