![如何限制 ssh *远程* 端口转发?](https://linux22.com/image/44197/%E5%A6%82%E4%BD%95%E9%99%90%E5%88%B6%20ssh%20*%E8%BF%9C%E7%A8%8B*%20%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%EF%BC%9F.png)
答案1
这已在 2018 年 8 月 24 日发布的 OpenSSH 7.8p1 中实现。引用发行说明:
将 PermitListen 指令添加到 sshd_config(5) 和相应的 PermitListen=authorized_keys 选项,控制远程转发可以使用哪些侦听地址和端口号 (ssh -R ...)。
答案2
您可以使用一个选项no-port-forwarding
来阻止所有端口转发。至少从 OpenSSH 4.3p2 开始(CentOS 5.3 - 我可以访问的最旧的机器)。将其放在您原本要放置的位置permitopen
。
答案3
使用 ssh 无法对其进行限制。也许可以使用 selinux 或 iptables 来达到此目的。然而,有一种替代策略可能适合也可能不适合您的需求。使用到 UNIX 套接字的绑定。从 openssh 版本 6.8 开始应该可用。
使用套接字时,您可以使用文件系统 ACL(尽管套接字是否尊重这可能与 *nix 相关),并且可以使用它来防止一个用户绑定到另一个用户的套接字。但是,它不会以任何方式阻止绑定到端口,因此根据您的用例,它可能没有帮助,但如果您始终只能使用套接字,则端口可能并不重要。
使用 UNIX 套接字处理悬空套接字文件可能会出现问题,因为反向发布者会尝试重新连接。我对这个问题还有另一个问题(和答案)。简而言之,您可能还想使用StreamLocalBindUnlink yes
:
答案4
复制:https://superuser.com/questions/516417/how-to-restrict-ssh-port-forwarding-without-denying-it
看起来您可以使用以下内容?
在服务器配置文件中有一个许可证开放选项。此选项可用于指定可以建立转发的主机和端口。此选项可以在 Match 块内使用,因此可以通过用户、组、主机名或 IP 地址模式进行限制。
编辑:所以在服务器配置中添加以下内容
允许打开主机:端口
允许打开 IPv4_addr:端口
PermitOpen [IPv6_addr]:端口