nginx代理ssh协议

您所在的位置:网站首页 nginx代理git nginx代理ssh协议

nginx代理ssh协议

2024-07-14 06:50| 来源: 网络整理| 查看: 265

购买了阿里云多台服务器,其中只有一台服务器,开通了外网,其他服务器没有外网,访问其他服务器的时候,需要先登录有外网的服务器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  

 

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

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3