服务器系统为Ubuntu18.04.3,反向代理搭建隧道并加到开机自启

导读:本篇文章讲解 服务器系统为Ubuntu18.04.3,反向代理搭建隧道并加到开机自启,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

场景

目前有公网服务器A,内网服务器B,现在想通过反向代理的方式来访问内网服务器B。
A:123.123.123.123 端口为3577

1、配置思路

1.由于SSH在一段时间没有数据包之后会断开,所以最好直接使用autossh来配置反向代理。
2.现在将B服务器的22端口绑定到公网服务器A的某一端口PA上,那么当我们请求公网的PA时,公网服务器就会把请求转发到内网服务器上端口22上

2、反向代理

(注意:以下操作都在内网服务器进行,且我是在root角色下进行)

1.安装autossh,我的服务器上装的是Ubuntu18.04,可用以下命令进行安装

apt-get install autossh

2.然后添加我们的内网机器的ssh-key到公网以实现自动登陆:ssh-copy-id <公网机器A的登陆用户名>@<公网机器的ip地址>

ssh-copy-id root@123.123.123.123

如果本机并没有ssh的key,需要先执行ssh-keygen 再进行

3.测试免密登录

ssh root@123.123.123.123

4.利用autossh搭建反向隧道:
autossh -M 50533 -fCNR 3577:127.0.0.1:22 <公网机器A的ssh登录用户名>@<公网机器A的IP>

autossh -M 50533 -fCNR 3577:127.0.0.1:22 root@123.123.123.123

说明:

​ -M 添加一个端口用于心跳包的发送,该端口只要是服务器上一个可用的未被占用的端口(50533)就行
 -f 后台执行ssh指令
​ -C 允许压缩数据
​ -N 不执行远程指令
​ -R 将远程主机(服务器A)的某个端口转发到本地机器(内网服务器B)的指定端口
​ -L 将本地机器(客户机)的某个端口转发到远端指定机器的指定端口
​ -p 指定远程主机的端口

3、开机自启

(注意:这里是全新刚装好的系统)

1.ubuntu18.04不再使用initd管理系统,改用systemd后已经不支持rc.local 这个开机自动启动的脚本了,所以为了能继续用这个脚本,我们需要去编写一个ubuntu18 下的启动脚本,通过这个脚本来启动我的rc.local脚本。

2.systemd默认读取/etc/systemd/system下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。一般系统安装完/lib/systemd/system/下会有rc-local.service文件,即我们需要的配置文件,链接过来

ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service

执行命令查看rc-local.service的内容

cd /etc/systemd/system/
cat rc-local.service

如果最后没有[install]区块,则自己添加如下内容

[Install]
WantedBy=muti-user.target
Alias=rc.local.service

创建/etc/rc.local文件 touch /etc/rc.local

赋予权限 chmod 755 /etc/rc.local
说明:

chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。

一般是三个数字:

第一个数字表示文件所有者的权限

第二个数字表示与文件所有者同属一个用户组的其他用户的权限

第三个数字表示其它用户组的权限。

权限分为三种:读(r=4),写(w=2),执行(x=1)。

综合起来:
         可读可执行(rx=5=4+1)
         可读可写(rw=6=4+2)
         可读可写可执行(rwx=7=4+2+1)。

编辑rc.local文件并添加以下内容

#!/bin/bash
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# auto start autossh
autossh -M 50533 -fCNR 3577:127.0.0.1:22 root@123.123.123.123

echo "添加自启动脚本成功!" > /usr/local/test.log
exit 0

启用服务

sudo systemctl enable rc-local

启动服务

sudo systemctl start rc-local.service

说明:正常开启服务不会报错的(没有红色的Fail…出现,说明能正常启动)

查看服务状态

sudo systemctl status rc-local.service

重启并检查test.log文件

sudo systemctl restart rc-local.service

cat /usr/local/test.log  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119768.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!