ssh

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

其中:

  • SERVER_USER为外网服务器的用户名
  • SERVER_IP为外网服务器的公网IP或域名
  • LOCAL_USER为内网主机的用户名
  • LOCAL_SITE为内网站点

参考资料

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

vi /etc/ssh/sshd_config
GatewayPorts yes
PermitTunnel yes
TCPKeepAlive yes
AllowTCPForwarding yes
PermitOpen any
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ssh常用用法小结 在我们日常的工作中,经常涉及到维护服务器,那么为了方便操作,以及安全方面的考虑,通常我们都会在...
    大晴天小阳光阅读 3,184评论 0 3
  • 最近需要从外网通过ssh访问内网主机,但是又不具备给路由器添加端口映射的权限,于是用到了ssh的远程端口转发。于是...
    小丨仔阅读 6,056评论 0 0
  • 是不是每个人心里都曾爱过那么一个人?她(他)在你的心里如同女神(男神)一样的存在?她(他)在你看来总是那么优...
    孙卫卫阅读 279评论 0 0
  • 窗外雨三声 台前哀叹兮 树下蝉鸣鸣 不见伞中人
    lethergoz阅读 271评论 0 1
  • 你看,没买到票的列车会允许你上车,付出的真心也能收回来的。从你的城市路过,只会是路过。我不愿再多呆一分一秒,即使流...
    Aprils_阅读 165评论 0 0