内网穿透 Ubuntu 阿里云 ssh反向代理 autossh自启动

2 篇文章 0 订阅
1 篇文章 0 订阅

0 配置

假设公司有一台没有公网ip的主机A

你想要使用自己的笔记本B在家访问主机A

那么你需要一台有公网IP的跳板机C,这里采用阿里云服务器为跳板。

假设主机A的用户名为userA,密码123

假设跳板机C的用户名为root,密码为456,公网IP为aliyun.ip,开放端口2333

为了能够开机自启,断联重连,需要用到autossh,如果你公司的主机A从来不关机不重启,直接用ssh即可。

1 阿里云服务器

1.1购买阿里云服务器,设置账户密码

 

1.2设置安全组,开放端口

左侧 网络与安全->安全组->选择实例

 

本实例安全组->选择实例

 

需要开放入方向和出方向的端口,开放了2333-4555之间的全部端口

 

1.3上传公钥

为了访问方便,在你的主机A,笔记本B上上传公钥到C

ssh-keygen                          #生成密钥
ssh-copy-id root@aliyun-ip          #上传服务器,用户名和IP地址是你阿里云的

至此,跳板机配置完毕

2 安装autossh

在公司的主机A上安装autossh

sudo apt install autossh

3 设置反向代理

假设主机A的用户名为user,密码123

假设跳板机C的用户名为root,密码为456,公网IP为aliyun.ip,开放端口2333

在主机A输入以下命令:

autossh -M 12345 -fgnvNTR aliyun.ip:2333:localhost:22 root@aliyun.ip -o ServerAliveInterval=1

-M是通过监听12345端口防断联,是autossh的参数

ServerAliveInterval每1秒检查一次连接

-fgnvNTR是ssh的参数,自行百度

若采用ssh,去掉几个参数即可

autossh -fgnvNTR aliyun.ip:2333:localhost:22 root@aliyun.ip

此时就可以在笔记本B上远程连接了

ssh userA@aliyun.ip -p 2333

4 autossh自启动

4.1 创建systemd文件

sudo vim /etc/systemd/system/autossh.service

4.2 编写内容如下

[Unit]
Description=autossh
After=network-online.target
​
[Service]
​
Environment="AUTOSSH_GATETIME=0"
User=userA
WorkingDirectory=/home/userA
ExecStart=/usr/bin/autossh -M 12345 -gnvNTR aliyun.ip:2333:localhost:22 root@aliyun.ip -o ServerAliveInterval=1
​
[Install]
WantedBy=multi-user.target

需要注意的是参数为-gnvNTR而不是-fgnvNTR,因为在systemctl中不支持f参数,不要复制粘贴错了,会无法运行的。

4.3 Reload systemd

sudo systemctl daemon-reload

4.4 Start the Autossh service

sudo systemctl start autossh.service

4.5 Enable at boot

sudo systemctl enable autossh.service

4.6 查看状态

sudo systemctl status autossh

5 连接

在你的笔记本上愉快的连接吧

ssh userA@aliyun.ip -p 2333

6 解决SSH 长时间不操作卡死

6

6.1 客户端解决

vim /etc/ssh/ssh_config
ServerAliveInterval 60

6.2 服务端解决

vim /etc/ssh/sshd_config
ClientAliveInterval 60

7 坑

这里面最大的坑就是防火墙!!!

关闭主机防火墙,阿里云端口打开,还有就是路由器的防火墙一定要关了!!!

要实现autossh自启动,你可以按照以下步骤进行操作: 1. 创建一个启动脚本:首先,你需要创建一个启动脚本,以便在系统启动时运行autossh。你可以使用任何文本编辑器来创建一个新的脚本文件,比如autossh_start.sh。 2. 编辑启动脚本:在启动脚本中,你需要指定autossh的命令和参数。例如,如果你要使用autossh来建立一个SSH隧道连接,可以在启动脚本中添加以下内容: ```bash #!/bin/bash autossh -M 0 -f -N -L <本地端口>:<目标主机>:<目标端口> <SSH用户名>@<目标主机IP> ``` 请将 `<本地端口>`, `<目标主机>`, `<目标端口>`, `<SSH用户名>` 和 `<目标主机IP>` 替换为实际的值。 3. 保存并退出:完成编辑后,请保存并退出启动脚本。 4. 设置脚本权限:运行以下命令,以确保启动脚本具有执行权限: ```bash chmod +x autossh_start.sh ``` 5. 将脚本添加到启动项:将启动脚本添加到系统的启动项中,以便在系统启动时自动运行。具体的操作方式可能因操作系统而异。 - 对于基于 systemd 的系统(如Ubuntu 16.04+),你可以创建一个名为 `autossh.service` 的服务单元文件,并将其放置在 `/etc/systemd/system/` 目录下。在文件中添加以下内容: ``` [Unit] Description=Autossh Service After=network.target [Service] ExecStart=/path/to/autossh_start.sh [Install] WantedBy=default.target ``` 请将 `/path/to/autossh_start.sh` 替换为实际的启动脚本路径。 然后,运行以下命令以重新加载 systemd 配置并启用服务: ```bash sudo systemctl daemon-reload sudo systemctl enable autossh.service ``` - 对于其他系统(如 CentOS、Red Hat、Debian 等),你可以将启动脚本的符号链接添加到 `/etc/rc.d/rc.local` 文件中。运行以下命令将启动脚本添加到 `rc.local` 文件中: ```bash sudo ln -s /path/to/autossh_start.sh /etc/rc.d/rc.local ``` 请将 `/path/to/autossh_start.sh` 替换为实际的启动脚本路径。 6. 重新启动系统:完成上述步骤后,重新启动系统,autossh应该会在系统启动时自动运行。 这样,autossh就会在系统启动时自动建立 SSH 隧道连接。记得根据你的实际需求和配置进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值