我有一台运行 SSH 的计算机,我想让我的朋友访问它,但我不想让他们通过 SSH 隧道使用我的互联网连接(虽然我自己想这样做)。有没有办法记录 SSH 隧道的创建时间以及由哪些(本地)用户创建,或者,如果这不可能,只允许某些用户这样做?
答案1
答案2
您要确保 /etc/ssh/sshd_config 包含
AllowTcpForwarding no
然后在文件末尾输入
Match User yourusername
AllowTcpForwarding yes
这将允许您(且只允许您)根据自己的心意进行端口转发,但正如 João 所说,除非您也禁用 shell 访问,否则您将无法阻止他们运行自己的程序。
答案3
请注意,虽然您可以通过 sshd 禁用 TCP 转发,但您需要采取更多措施来限制用户的传出活动。为他们提供 shell 意味着赋予他们很多权力。
例如,如果他们可以将文件 scp 到服务器并执行 /home 中的文件,他们只需上传 pppd 二进制文件,然后使用它通过 SSH 运行 PPP。如果您允许传入连接,他们只需通过/usr/sbin/sshd -p 9999 -f special_sshd_config
该 sshd 运行和使用您的服务器即可。
您可能需要查看 iptables 所有者模块(man iptables,搜索所有者)和 chroot jails,但如果不破坏他们的 shell 体验,这个问题真的很难解决。