之前已经介绍过远程登录树莓派,主要讲的是局域网环境下通过SSH访问树莓派。通过互联网环境下远程访问局域网内的树莓派的方法,从实现角度上主要分为NAT端口映射、反向代理、内网穿透。本期我将介绍端口映射和SSH反向代理。
1.NAT端口映射
该种方法是通过拿到局域网上的公网IP,通过设置局域网网关NAT端口映射来实现从外网对树莓派的直接访问。本方法比较局限,主要是目前比较难获得公网IP,尤其是家庭自用的情况下,当然也可以联系你的宽带运营商获得固定公网IP。只能说这是一种方法,从实现上来说比较直接。
2.SSH反向代理
SSH可以实现内网的登录,同样可以利用该技术实现SSH反向隧道,实现从外网登录树莓派。该方法的前提是你要有一台具有公网IP的服务器。
首先,让树莓派主动向具有公网IP的服务器的某个端口发起SSH连接,比如publicip.org:9999
,形成一个SSH隧道。当我们使用互联网上的其他电脑,通过SSH连接到服务器的这一端口时,服务器会把通信内容接力到与树莓派的SSH隧道中,最终实现远程访问树莓派。
之前我们已经介绍过申请一台亚马逊的云主机,可以使用该主机来实现SSH反向代理服务。
(1)在云主机上需要修改sshd_config配置文件。
$ sudo nano /etc/ssh/sshd_config
[sudo] password for haifeng:
$ sudo service sshd reload
(2)在树莓派上建立通道,这里user1是云主机的登录用户名,publicip.org是云主机的域名或者公网IP,10009是云主机上开放的端口,也是你用来形成SSH反向隧道的端口。命令回车后会提示输入密码登录,输入密码登录即可。
ssh -R 10009:localhost:22 [email protected]
然后会跳转登录至云主机,此处可以查看刚才建立的反向隧道的情况。
~$ netstat -anp | grep 10009
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:10009 0.0.0.0:* LISTEN -
tcp6 0 0 :::10009 :::* LISTEN -
该运行窗口不允许关闭,关闭后该隧道也随之关闭。
(3)然后在其他电脑上可以通过该隧道进行远程登录了。
~$ ssh -p 10009 [email protected]
下期预告
下期我们将介绍通过内网穿透的方式远程访问局域网树莓派,唠这个我就不困啦。
欢迎关注我的公众号,持续更新中~~~