接上文 组装树莓派4B及安装系统,本文是设置在外远程访问家里树莓派的详细步骤。
基本设置
在开始之前,先做一些基本让树莓派能更好的工作。
禁止自动登录
树莓派默认启动后直接进入桌面,不需要用户登录。虽然树莓派常放置于内网,但这样还是很不安全。为了提高安全性和隐私保护,建议禁止自动登录功能。操作方式如下:
在窗口输入
sudo raspi-config
,进入命令行交互界面;通过上下箭头选“boot options”回车,接着选“desktop/cli”回车。如果你是安装了桌面系统,选择“desktop”,否则选“console”,然后回车;
- 界面回到初始选择界面,按“tab”键将光标跳转到”finish”,回车。程序会问你是否重启,根据自己需求选“yes”或者”no”。
raspi-config
是树莓派系统自带的系统配置工具,简单好用且功能强大,没事建议多进去看看。
设置静态ip
树莓派在家里主要作为服务器,ip不应该经常变动。固定树莓派ip有三种方法:
- 通过路由器绑定ip和mac地址。这需要登录路由器的web管理界面,其操作根据型号有所不同;
在图形桌面中,右键右上角的网络图标,选择“wirelesss&wired network setting”,在出现的设置窗口中选择“interface”,分别设置有线网卡(eth0)和无线网卡(wlan0)的ip地址、子网掩码、dns等:
手动编辑/etc/dhcpcd.conf文件,在文件最末加入类似的如下行:
interface eth0 inform 192.168.1.2 static routers=192.168.1.1 static domain_name_servers=114.114.114.114 static ip6_address=2409:8a00:78d8:10b0:9d9e:1193:c495:228f
远程访问设置
做好基本设置后,让我们正式进入远程访问的设置。
开启ssh
ssh几乎是所有服务器必备且最重要的服务之一,但树莓派默认是关闭的,所以要先开启。树莓派上开启ssh服务方法有三种:
- 命令行中输入:
sudo systemctl enble sshd && sudo systemclt start sshd
; - 使用
raspi-config
命令,在“intefacing options”中选择“ssh”,设置为开启; - 在图形桌面中,点击左上角树莓派logo,菜单中选择“preferences” -> “raspberry pi configuration”,在弹出的窗口中选择“interfaces” -> “ssh”,点击确定。
设置好后,用putty等终端连接树莓派,成功连上则说明设置没问题。
内网穿透
对于在家里部署nas或者放置服务器的人来说,内网穿透是必须掌握且绕不过的话题。网络穿透有向日葵、花生壳等收费穿透软件,也有teamviewer等远控软件,还有frp等开源软件可供选择。本文使用有公网ip的vps做内网穿透服务器,软件使用开源的frp做内网渗透方案,设置步骤如下:
- 部署服务端。frp官网 下载对应服务器系统的软件版本,用
tar -zxvf frp_0.29.0_linux_xxxx.tar.gz
命令解压。然后进入frp软件目录,编辑frps.ini。一个简易有授权的配置为:[common]
接下来启动frps服务:
bind_port = 你的端口号
token=认证密钥nohup ./frps -c frps.ini >> frps.log 2>&1 &
。如果开了防火墙,记得放行相应的端口。 树莓派上部署客户端。尽管树莓派4B用的64位处理器,但raspbian系统是32位的,所以从frp官网下载时记得选择”frp_0.29.0_linux_arm.tar.gz“版本。解压后进入frp目录,编辑frpc.ini。一个开启ssh穿透访问的配置为:
[common] server_addr = 服务器ip server_port = 服务器端口 token = 服务器密钥 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 希望在服务器上监听的端口
配置好后启动frp客户端:
nohup ./frpc -c frpc.ini >> frpc.log 2>&1 &
。
配置没有问题的话,通过公网ip监听的端口便可ssh连到树莓派上。
ssh隧道是非常强大的功能,[ssh端口转发的三种方式]一文中对其有比较详细的介绍。实践中强烈建议内网穿透只开启ssh端口,其它软件的远程访问通过ssh隧道连接,安全且方便。
vnc远程访问
对于桌面系统来说,能远程查看桌面是最好的。一般来说有两种解决方案:windows远程桌面那一套的rdp,以及开源的vnc。对于一个linux玩家来说,vnc无疑是更好的选择。接下来简要说明vnc的配置过程。
- 对于接上显示器的树莓派,建议用vncserviced。三种开启方法同ssh,命令行命令是:
sudo systemctl enable vncserver-x11-serviced && sudo systemctl start vncserver-x11-serviced
。树莓派用的realvnc服务端,需要下载realvnc客户端才能连接; - 设置好后就移除鼠标键盘显示器的树莓派(处于无头“headless”模式),vnc服务端需要用虚拟桌面。操作方式是:输入
vncserver
,vnc服务端将创建虚拟桌面。然后再通过realvnc客户端连接,端口默认是5901(可以通过netstat -nlpt | grep -i vnc
查看)
实践中不建议通过frp对vnc连接做内网穿透,尽量选择ssh端口转发,加密连接流量。
到此,我们便设置了完美的树莓派远程访问方案,既有命令行的ssh,也可以通过vnc查看远程桌面。
参考
- https://www.raspberrypi.org/documentation/remote-access/vnc/
- https://raspberrypi.stackexchange.com/questions/47823/how-to-prevent-autologin-of-gui
- https://www.jianshu.com/p/308fb22a7dab
本文最后修改日期:2019年11月14日