用SSH访问内网主机的方法详解程序员

如今的互联网公司通常不会直接自己直接配主机搭建服务器了,而是采用了类似阿里云的这种云主机,当应用变得越来越大了之后,就不可避免地增加主机,而出于成本考虑,不可能给每一台主机都分配公网带宽,所以实际的情况可能会变成这样:

用SSH访问内网主机的方法详解程序员

内网IP为10.51.15.12和10.51.15.13的两台主机并没有外网带宽,通常是作为后端数据库服务器或者后端业务逻辑处理服务器使用,这样我们会遇到一个问题:无法直接用SSH登录这两台服务器,如何解决这个问题?——当然是借助带有公网IP的服务器“中转”一下了,如下图:

用SSH访问内网主机的方法详解程序员

考虑到SSH其实走的是TCP协议,我们只需要在10.51.15.11上安装和配置一个TCP中转服务器即可,NGINX就具有这个功能。如何安装和配置NGINX请移步这里:简易NGINX TCP反向代理设置

这里介绍的内容和上述文章没有太多不同,仅仅在配置上有一点点不一样(而且还更简单),编辑/etc/nginx/nginx.conf

stream{ 
    upstream ssllink12{ 
        server 10.51.15.12:22 max_fails=3 fail_timeout=10s; 
    } 
     
    upstream ssllink13{ 
        server 10.51.15.13:22 max_fails=3 fail_timeout=10s; 
    } 
 
    server{ 
        listen 1118; 
        proxy_connect_timeout 20s; 
        proxy_timeout 5m; 
        proxy_pass ssllink12; 
    } 
     
    server{ 
        listen 1119; 
        proxy_connect_timeout 20s; 
        proxy_timeout 5m; 
        proxy_pass ssllink13; 
    } 
}

配置很简单,意思也很明确,将连接至1118端口的TCP请求转至10.51.15.12:22,将连接至1119端口的TCP请求转至10.51.15.13:22。

重启NGINX:

systemctl restart nginx

如有必要,配置一下防火墙:

firewall-cmd --zone=public --add-port=1118/tcp --permanent 
firewall-cmd --zone=public --add-port=1119/tcp --permanent 
firewall-cmd --reload

然后直接用SSH试试看吧。

NGINX采用了“透明”的工作模式,以致SSH客户端不知晓自己的连接请求其实已经被转交到一台内网主机中了。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/6426.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论