问题:我需要创建 ssh 转发到其他作为代理的 Linux 机器。
我有两个 Linux 机器(centos 5.5),一个在办公室(服务器1) 位于防火墙后面,其他位于主机托管处(服务器2)
服务器1在端口上安装了 Squid 代理3128。
我不能使用服务器1作为家里的直接代理,因为它位于防火墙后面。
我能够从服务器1到服务器2当我登录到服务器2ican ssh root@localhost -p 12312 到服务器1
我需要的是配置服务器2所以它转发端口服务器2:3128 至服务器1:3128
我可以补充服务器2IP 地址和端口到 Firefox 代理并访问办公网络。
谢谢
答案1
猜测
如果我理解正确的话,您希望通过浏览器从客户端连接到服务器 2,然后将连接隧道传输到服务器 1,从而允许您通过安装在服务器 1 上的 squid-proxy 访问办公网络。
为了完成猜测,我认为你使用了类似
server1$ ssh -R 12312:localhost:22 server2
建立第一条隧道。
解决方案尝试
如果您确实希望能够在客户端的 Firefox 设置中以代理身份进入 server2,请确保在 server2 的 sshd_config (/etc/ssh/sshd_config) 中启用了 GatewayPorts:
GatewayPorts yes
还要确保您想要使用的端口没有阻止 iptables 规则。
那么你可以使用以下方法来代替现有的隧道:
server1$ ssh -R *:3128:localhost:3128 server2
或者如果你真的想使用现有的隧道,你可以使用:
server2$ ssh -L *:3218:localhost:3218 -p 12312 localhost
一些旁注
如果您按照上述方式执行此操作,则所有可以访问服务器 2(无需登录)的人都可以使用端口 3128 作为代理端口,从而访问您的办公网络(如果没有其他措施)
我不知道贵公司存在什么样的政策,但在尝试此类隧道之前,请确保您没有违反任何政策。
另一种解决方案
将现有隧道更改为
server1$ ssh -R 3128:localhost:3128 server2
从您的客户发出
client$ ssh -L 3218:localhost:3128 server2
然后在您的 Firefox 中添加 localhost 和端口 3128 作为代理配置。
这样你就不需要配置 GatewayPorts,并且只有在 server2 上登录的人才能使用隧道到 server1