接上文 组装树莓派4B及安装系统,本文是设置在外远程访问家里树莓派的详细步骤。

基本设置

在开始之前,先做一些基本让树莓派能更好的工作。

禁止自动登录

树莓派默认启动后直接进入桌面,不需要用户登录。虽然树莓派常放置于内网,但这样还是很不安全。为了提高安全性和隐私保护,建议禁止自动登录功能。操作方式如下:

  1. 在窗口输入sudo raspi-config,进入命令行交互界面;raspi-config界面
  2. 通过上下箭头选“boot options”回车,接着选“desktop/cli”回车。如果你是安装了桌面系统,选择“desktop”,否则选“console”,然后回车;
  3. 界面回到初始选择界面,按“tab”键将光标跳转到”finish”,回车。程序会问你是否重启,根据自己需求选“yes”或者”no”。

raspi-config是树莓派系统自带的系统配置工具,简单好用且功能强大,没事建议多进去看看。

设置静态ip

树莓派在家里主要作为服务器,ip不应该经常变动。固定树莓派ip有三种方法:

  1. 通过路由器绑定ip和mac地址。这需要登录路由器的web管理界面,其操作根据型号有所不同;
  2. 在图形桌面中,右键右上角的网络图标,选择“wirelesss&wired network setting”,在出现的设置窗口中选择“interface”,分别设置有线网卡(eth0)和无线网卡(wlan0)的ip地址、子网掩码、dns等:树莓派网络设置
  3. 手动编辑/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服务方法有三种:

  1. 命令行中输入:sudo systemctl enble sshd && sudo systemclt start sshd
  2. 使用raspi-config命令,在“intefacing options”中选择“ssh”,设置为开启;
  3. 在图形桌面中,点击左上角树莓派logo,菜单中选择“preferences” -> “raspberry pi configuration”,在弹出的窗口中选择“interfaces” -> “ssh”,点击确定。 树莓派开启ssh访问

设置好后,用putty等终端连接树莓派,成功连上则说明设置没问题。

内网穿透

对于在家里部署nas或者放置服务器的人来说,内网穿透是必须掌握且绕不过的话题。网络穿透有向日葵、花生壳等收费穿透软件,也有teamviewer等远控软件,还有frp等开源软件可供选择。本文使用有公网ip的vps做内网穿透服务器,软件使用开源的frp做内网渗透方案,设置步骤如下:

  1. 部署服务端。frp官网 下载对应服务器系统的软件版本,用tar -zxvf frp_0.29.0_linux_xxxx.tar.gz命令解压。然后进入frp软件目录,编辑frps.ini。一个简易有授权的配置为: [common]
    bind_port = 你的端口号
    token=认证密钥
    接下来启动frps服务:nohup ./frps -c frps.ini >> frps.log 2>&1 &。如果开了防火墙,记得放行相应的端口。
  2. 树莓派上部署客户端。尽管树莓派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的配置过程。

  1. 对于接上显示器的树莓派,建议用vncserviced。三种开启方法同ssh,命令行命令是:sudo systemctl enable vncserver-x11-serviced && sudo systemctl start vncserver-x11-serviced。树莓派用的realvnc服务端,需要下载realvnc客户端才能连接;
  2. 设置好后就移除鼠标键盘显示器的树莓派(处于无头“headless”模式),vnc服务端需要用虚拟桌面。操作方式是:输入vncserver,vnc服务端将创建虚拟桌面。然后再通过realvnc客户端连接,端口默认是5901(可以通过netstat -nlpt | grep -i vnc查看)

实践中不建议通过frp对vnc连接做内网穿透,尽量选择ssh端口转发,加密连接流量。

到此,我们便设置了完美的树莓派远程访问方案,既有命令行的ssh,也可以通过vnc查看远程桌面。

参考

  1. https://www.raspberrypi.org/documentation/remote-access/vnc/
  2. https://raspberrypi.stackexchange.com/questions/47823/how-to-prevent-autologin-of-gui
  3. https://www.jianshu.com/p/308fb22a7dab