OpenSSH 忽略 sshd_config 中的“AllowTcpForwarding no”

OpenSSH 忽略 sshd_config 中的“AllowTcpForwarding no”

在 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,而在不使用时不会应用设置。MatchMatch 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

你确定你的配置文件中没有其他东西以某种方式覆盖你的设置吗?(比如匹配语句)

相关内容