在 ubuntu 16.04.3 / OpenSSH_7.2p2 上,通过在 /etc/ssh/sshd_config 中设置这些值来全局禁用隧道无效,并且动态/本地隧道仍然有效
AllowAgentForwarding no
AllowTcpForwarding no
AllowStreamLocalForwarding no
PermitOpen none
PermitTunnel no
X11Forwarding no
更新:我只能通过对选定的用户使用“匹配”来使其工作
Match User zuser
AllowTcpForwarding no
X11Forwarding no
AllowAgentForwarding no
AllowStreamLocalForwarding no
PermitOpen none
PermitTunnel no
答案1
OpenSSH如果在配置中的某个较早位置存在另一个,则在使用时会意外地应用设置Match
,而在不使用时不会应用设置。Match
Match block
下面的例子证明了这一点:
Match Group sudo
# this is applied to sudo members
ClientAliveInterval 20
# this is applied to sudo members
AllowTcpForwarding yes
# one might assume that the Match block has ended here - it did not
# the following is ALSO applied to sudo members only
X11Forwarding
AllowTcpForwarding no
虽然大多数配置都使用缩进以提高可读性,但Match
缩进结束后并不会结束。
如果 Match 行上的所有条件都得到满足,则以下几行上的关键字将覆盖配置文件全局部分中设置的关键字,直到另一个匹配行或文件末尾
Match
如果其中一个选项在该上下文中无效,OpenSSH 只会注意到由于不适当插入而导致的意外配置更改。否则,后续说明将完全依赖于该Match
条件。
Match
可以通过将所有块严格插入到配置文件的最末尾并将所有无条件配置严格放在第一行之上来解决意外配置Match
。
答案2
这对我来说似乎在 Vagrant 框 (openssh-server 1:7.2p2-4ubuntu2.2) 中运行良好
AllowTcpForwarding no
/var/log/auth.log:
Nov 22 16:19:41 packer-qemu sshd[1164]: refused local port forward: originator 127.0.0.1 port 44540, target localhost port 22 Nov 22 16:19:46 packer-qemu sshd[1164]: refused local port forward: originator 127.0.0.1 port 44546, target localhost port 22
你确定你的配置文件中没有其他东西以某种方式覆盖你的设置吗?(比如匹配语句)