我在服务器 10.1.1.1 上创建了这个隧道:
ssh -f -N -o -L 8789:10.2.2.2:22 [email protected]
这允许我通过端口 8789 从本地服务器连接到远程服务器,如下所示:ssh -p 8789 user@localhost
我想要实现的是让其他服务器也通过该端口连接到远程服务器 10.2.2.2,所以我提出了这个:
ssh -f -N -o -L 10.1.1.1:8789:10.2.2.2:22 [email protected]
这样,其他服务器,如 10.1.1.2 或 10.1.1.3(能够 ssh 进入 10.1.1.1),可以通过隧道连接到 10.2.2.2:
ssh -p 8789 [email protected]
问题是这样,每个有权访问 10.1.1.1 的人都可以使用该隧道,而我不希望这样。假设我只希望 10.1.1.2 和 10.1.1.3 能够使用该隧道。我该如何做到这一点?谢谢。
这可以通过防火墙规则来完成。例如,Iptables。首先,我们允许特定 IP 上的流量:
iptables -A IN_public_allow -s a.b.c.d -p tcp -m tcp --dport abcd -m conntrack --ctstate NEW -j ACCEPT
然后整个流量都限制在端口上:
iptables -A IN_public_allow -p tcp -m tcp --dport abcd -m conntrack --ctstate NEW -j DROP
这样,除了 ip abcd 外,其他人都被阻塞在端口