我已经在网关上打开了一个 ssh 隧道,如下所示:
autossh -M 30000 -f -N example.com -L \*:20022:192.168.1.40:22
我怎样才能让一个用户(比如说 John)只使用这个 ssh 隧道,并限制我拥有的所有其他用户,以便除了 John 之外没有其他用户可以使用端口 20022 进行 ssh?请注意,无论是作为本地用户还是在 LDAP 中,用户 john 都不存在于我的网关上。
答案1
如果客户端是 Linux 主机,则可以使用iptables:
iptables -A OUTPUT --dest 192.168.1.40 --dport 22 -m owner --uid-owner john -j ACCEPT
iptables -A OUTPUT --dest 192.168.1.40 --dport 22 -j REJECT
请注意,此条件取决于目标地址和端口,而不是源端口 20022。如果您确实想仅限制对一个源端口的访问,那么您可以使用--sport 20022
而不是--dest
和--dport
。但这当然不会阻止另一个用户在其他端口上打开类似的隧道。
答案2
仅将 John 的公钥发布到网关上的 authorized_keys 文件。关闭 pw auth。