SSH反向代理使用

18 篇文章 9 订阅
14 篇文章 1 订阅

SSH反向代理

先说说什么是代理,源服务器由于各种原因无法访问目标服务器提供的服务,但是存在一个agent服务器,源服务器可以访问它,它可以访问目标服务器,那么源服务器的消息发给他,它在把请求转发给目标服务器,就间接的实现了源服务器访问目标服务器的目的。

这就是代理,也是一般所说的正向代理,正向代理一般是代理客户端(源服务器,信息的请求者)。这时候,在公网上发送的信息的请求者就是代理服务器的身份,而不是真正客户端的身份。好处显而易见,隐藏客户端的身份。
在这里插入图片描述

反向代理

百度百科:当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

这句话不太好理解,应该改一改:“当一个代理服务器能够代理外部网络上的主机,使得内部网络可以访问时(不通过公网IP),这种代理服务的方式称为反向代理服务。”

在这里插入图片描述

SSH反向代理使用方法

假设123.139.238.155需要访问123.139.238.154的mysql 3306端口,但是有防火墙限制,如果想绕过防火墙则可以通过ssh隧道将123.139.238.154的3306端口代理到123.139.238.155的6003端口上,这样直接在123.139.238.155机器上访问6003端口就相当于访问123.139.238.154的3306端口。具体操作如下:
1、在123.139.238.154机器上执行如下命令

ssh -NfR 6003:localhost:3306 root@123.139.238.155 -p22

2、在123.139.238.155上通过下面命令访问mysql

mysql -h127.0.0.1 -uroot -pApt_2022! -P6003

但是这样子,6003端口只是监听在127.0.0.1上,如果还需要从其他机器访问,则需要这个端口需要监听在内网IP上,这时候又利用到了SSH端口转发的功能:

ssh -N -f -L 123.139.238.155:6003:127.0.0.1:6003 root@123.139.238.155

上面的命令是将123.139.238.155:6003接收到的请求转发哦到本机的127.0.0.1:6003端口上,6003端口恰好是SSH反向代理监听的端口,随后请求就会被转发到123.139.238.154主机上的3306端口,这样在就实现了访问123.139.238.154主机的mysql服务,同时特避免了在防火墙上打洞。

使用autossh断线自动重连

这样子如果123.139.238.154主机上的SSH进程停止了,那么从123.139.238.155就无法访问了,可以利用autossh的自动重连机制来避免这种情况。

在123.139.238.154主机上安装autossh程序后,通过下面的命令启动:

autossh -M 7281 -fCNR 6003:localhost:3306 root@123.139.238.155

-M参数理解为心跳即可。当心跳不通时,就会重连。当然也需要端口再转发下。否则只能从127.0.0.1访问。

再将上面的命令放入脚本中,开机启动即可。

SSH参数说明:

-N:指定这个SSH连接只进行端口消息转发,不执行任何SSH远程命令;
-L:指定本地监听的地址和端口;
-f: 这个SSH会话放入后台运行,不加这个参数的话,当退出当前SSH -L指定的终端时,端口转发进程就结束了,端口转发送也就结束了。所以务必要加上-f参数。

使用autossh时要用到ssh免密登录,参考设置
https://blog.csdn.net/jeikerxiao/article/details/84105529

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值