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

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

场景

目前有公网服务器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  
目录
相关文章
|
30天前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
54 5
Linux系统之安装Ward服务器监控工具
|
1月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
115 32
|
1月前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
131 4
Linux系统之Ubuntu安装cockpit管理工具
|
25天前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
28天前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
|
28天前
|
NoSQL Linux PHP
|
1月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
86 1
|
1月前
|
Ubuntu 应用服务中间件 开发工具
Ubuntu16.04搭建gitlab服务器,搭建pip源服务器(两种方式),搭建apt源服务器
这篇文章是关于如何在Ubuntu 16.04系统上搭建GitLab服务器、pip源服务器(使用pypiserver和NGINX两种方式),以及apt源服务器的详细教程。
28 0
Ubuntu16.04搭建gitlab服务器,搭建pip源服务器(两种方式),搭建apt源服务器
|
21天前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
1月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
下一篇
无影云桌面