1、首先将服务器ssh端口改成2048(只要不是22端口就行)
2、修改centos的文件/etc/ssh/sshd_config, 取消以下参数的注释或是修改其值

GatewayPorts yes
TCPKeepAlive yes
ClientAliveInterval 60
ClientAliveCountMax 3

3、内网PC执行

$ autossh -p 2048 -M 27400 -fNR '*:22:0.0.0.0:22' -o ExitOnForwardFailure=yes root@remoteip

其中的参数:
-p 27000: vps ssh 端口,默认值22
-M 27440: 中继服务器(vps)的代理服务监听端口,需保证不被vps其它进程占用
-NR '*:27401:localhost:27402': 端口映射,vps的27401端口映射到内网PC的27402端口
root@222.222.222.222: vps的用户名及IP
这里涉及到4个端口,27000是vps ssh的监听端口,27400是vps代理服务的监听端口,27401和27402是    vps与内网PC之间的一对端口映射,外网PC需要通过vps的27401端口访问内网。

配置autossh服务
使用以上指令已经可以完成所需的功能了,但是每次开机都得重新输一遍,很不方便,所以可以把指令封装成一个服务,然后设置为开机启动。在ubuntu中,可以在lib/systemd/system目录下新建一个autossh.service的文件,并输入以下内容:

[Unit]
Description=Auto SSH Tunnel
After=network-online.target
[Service]
User=root
Type=simple
ExecStart=/usr/bin/autossh -p 27000 -M 27400 -NR '*:27401:localhost:27402' root@222.222.222.222 -i ~/.ssh/id_rsa
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
StartLimitIntervalSec=5
StartLimitBurst=12
Restart=always
[Install]
WantedBy=multi-user.target
WantedBy=graphical.target

配置好后,通过以下指令完成启动、查询和自启动。

启动服务:sudo service autossh start
查看状态:sudo service autossh status
开机启动:sudo systemctl enable autossh.service
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐