SSH社区

ssh

2017-11-04  本文已影响7人  咚咚董dyh

ssh

ssh tunnel实现反向代理

假设在内网有一个自己的电脑IN,希望在外网访问内网资源。由于内网电脑没有公网IP,所以外网无法直接向内网电脑发起连接。为实现我们的目标,需要从内网电脑主动向一个外网服务器(具有公网IP即可)发起一个连接,外网通过这个服务器使用这一连接,再通过内网电脑访问内网资源。

外网 -> 服务器(S) <-> 内网主机(I) -> 内网

在内网电脑上操作,将外网服务器的localhost地址和内网主机映射起来,外网服务器localhost的222端口映射到内网主机的22端口。同时,外网服务器SERVER_IP的PORT端口映射到localhost的222端口。222和22可以替换为其他端口号。

SERVER_IP:PORT <-> localhost:222 <-> 内网主机:22

# Add -v to the ssh command to get some debugging information
$ ssh -CR 222:localhost:22 SERVER_USER@SERVER_IP
# 输入root密码登陆外网服务器
# -4 use ipv4,server_ip=0.0.0.0/192.168.0.1/localhost
ssh -CfND SERVER_IP:PORT -p 222 LOCAL_USER@localhost
# 输入LOCAL_USER密码完成与内网主机的连接
# 测试
curl --socks5 SERVER_IP:PORT LOCAL_SITE

其中:

参考资料

如果配置未成功,检查sshd的配置,确保ssh配置如下

vi /etc/ssh/sshd_config
GatewayPorts yes
PermitTunnel yes
TCPKeepAlive yes
AllowTCPForwarding yes
PermitOpen any
上一篇下一篇

猜你喜欢

热点阅读