nginx代理ssh协议


购买了阿里云多台服务器,其中只有一台服务器,开通了外网,其他服务器没有外网,访问其他服务器的时候,需要先登录有外网的服务器A,然后在服务器A上再通过ssh,访问目标服务器,这样很麻烦。

为了解决这个问题,我们在A服务器上用我们万能的nginx 代理ssh 协议的方式,使得我们客户端电脑可以直接访问目标服务器。

环境准备:A服务器需要安装nginx,其中nginx,是通过 yum 安装的普通nginx,没有增加任何其他模块、依赖、包等。

 

在nginx的主配置文件中,最下方,所有的{} 以外,增加 一个代码块(和http{}平级)如下:

stream {
    include /etc/nginx/stream.d/*.conf;
}

然后 在/etc/nginx/ 文件夹下,新建 stream.d 文件夹

接下来,在stream.d 文件夹中,创建一个文件,我这里用了协议名和ip做文件名

vim ssh37.conf

下一步的时候,输入文件内容

    upstream ssh37 {
        server  172.19.89.37:22;
    }
    server {
        listen     12201;
        proxy_pass ssh37;
        proxy_connect_timeout 1h;
        proxy_timeout 1h;
    }

其中  upstream 后的ssh37 是命名,随便取,只要不重复就可以

upstream中 server 后的ip 是局域网服务器的ip,22 是这个服务器的ssh开放端口,如果有修改,对应修改即可

server 下面的 listen 后的 12201 就是客户端最终访问服务器时用的端口(如果是阿里云,需要注意,这个端口需要在安全策略中开通)

proxy_pass   后的ssh37  和upstream 后面的ssh37 一致即可

proxy_connect_timeout   连接时间,根据实际情况修改即可

proxy_timeout  连接时间,根据实际情况修改即可

 

最后我们保存退出,执行重新加载配置文件即可完成配置

nginx -s reload

 

接下来我们可以通过客户端进行测试。

 

ssh 用户名@服务器A的外网ip -p 12201  

 

如果没有问题,即可看到要求输入密码的提示框,输入后即可登录

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM