• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何使用autossh实现树莓派内网穿透

相关文章 海叔叔 4年前 (2021-11-24) 50次浏览 已收录 0个评论
文章目录[隐藏]

内网穿透连接在长时间不使用时会自动断开。 现在有一个更好的解决方案,使用autossh来实现一个不会断开的反向链接,实现内网穿透。

如何使用

首先在树莓派上安装autossh,命令是:

apt-get install autossh

安装完毕后,启动autossh,可以使用如下命令:

autossh -M 5678 -NR 1234:localhost:22 [email protected] -p 222

参数解释:

参数“-M 5678”中,-M指定树莓派的监控端口,此处是5678。树莓派会定时检查该端口,如果不通则会重新发起连接。
命令“1234:localhost:22”中, 1234表示需要在远程主机上开启的端口,22表示本地的ssh端口。这个含义表示我们希望通过公网ip和1234端口访问树莓派的22端口。
[email protected] -p222 user为公网机器上的用户,222为公网机器的ssh端口。

免密码登陆

通常情况,建立反向连接时需要登陆公网机器,此时需要输入密码。而开机自启动输入密码显然不现实。此时需要使用sshkey来实现免密码登录。
首先,在树莓派上生成sshkey,命令如下:

ssh-keygen -t rsa

由于我们不需要密码,所以一路回车即可。生成的id_rsa.pub文件在~/.ssh/文件夹里。然后我们将这个key推送到公网机器。命令如下:

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

为了使树莓派开启能够自动连接公网服务器,我们使用systemctl来注册一个能够开机自动启动的服务。
首先创建autossh.service,命令如下:

vim /lib/systemd/system/autossh.service

加入以下内容:

[Unit]
Description=Auto SSH Tunnel
After=network-online.target
[Service]
User=树莓派用户
Type=simple
ExecStart=/usr/bin/autossh -NR 在公网服务器开启的端口:本地ip地址:本地端口 -i 树莓派用户的id_rsa绝对路径 公网服务器用户@公网服务器ip地址 -p 公网服务器端口 >> /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

创建完毕之后保存该文件。然后使用下面两条命令启动autossh并设置开机自启动。

systemctl enable autossh
systemctl start autossh

使用下面的命令查看autossh的运行状态:

systemctl status autossh

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何使用autossh实现树莓派内网穿透
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址