淘先锋技术网

首页 1 2 3 4 5 6 7

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 [email protected] -o ServerAliveInterval=1

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

ServerAliveInterval每1秒检查一次连接

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

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

autossh -fgnvNTR aliyun.ip:2333:localhost:22 [email protected]

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

ssh [email protected] -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 [email protected] -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 [email protected] -p 2333

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

6

6.1 客户端解决

vim /etc/ssh/ssh_config
ServerAliveInterval 60

6.2 服务端解决

vim /etc/ssh/sshd_config
ClientAliveInterval 60

7 坑

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

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