autossh穿透内网

之前树莓派使用ssh建立反向连接的时候不稳定,一会儿没用,就自动断开了,这个时候就得有一个帮手帮你维持这个连接,那就是autossh。

如何使用?

安装完autossh之后,可以用如下命令启动autossh

$ autossh -M 5678 -NR 1234:localhost:22 user@123.123.123.123 -p 222

上面几个参数的含义说明一下

-M 5678 这个表示是监控端口,检测到这个端口不通会重新连接

1234:localhost:22  1234表示需要在远程主机上开启的端口,22表示本地的ssh端口

user@123.123.123.123 -p222  user为vps上面的用户,222为vps ssh端口

避免输入密码

如果你不是用的sshkey,那么建立反向连接是需要输入密码的。为我们之后的加入开机启动带来了障碍。

生成sshkey

ssh-keygen -t rsa

由于我们不需要密码,所以一路回车,生成的id_rsa.pub文件在~/.ssh/文件夹里面。之后就可以将这个key推送到vps,使用如下命令进行推送

ssh-copy-id -i ~/.ssh/id_rsa.pub vps用户@vps主机地址 -p 端口/

之后就可以用当前的用户免密码登录vps了。

加入开机启动

使用systemctl来控制服务的注册以及启动

创建autossh.service

vim /lib/systemd/system/autossh.service

将下面的内容加进去

[Unit]
Description=Auto SSH Tunnel
After=network-online.target
[Service]
User=huchao
Type=simple
ExecStart=/usr/bin/autossh -NR 开启的端口:本地ip地址:本地端口 -i /home/huchao/.ssh/id_rsa vps用户@vps的ip地址 -p vps端口 >> /dev/null 2>&1
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
KillMode=process
Restart=no
[Install]
WantedBy=multi-user.target
WantedBy=graphical.target

之后执行

systemctl enable autossh
systemctl start autossh

使用

systemctl status autossh

查看是否已经成功启动。

赞赏

微信赞赏支付宝赞赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注