远程访问
远程访问简介
有时,您需要在不连接显示器、键盘和鼠标的情况下访问 Raspberry Pi。也许 Raspberry Pi 嵌入了机器人或安装在不方便的位置。或者您没有备用显示器。
通过本地网络远程控制
要从本地网络上的其他设备远程控制 Raspberry Pi,请使用以下服务之一:
SSH (Secure SHell)可安全访问 Raspberry Pi 上的终端会话。VNC(Virtual Network Computing )可让您安全地访问 Raspberry Pi 上的桌面屏幕共享。您只需要另一台电脑、本地网络和 Raspberry Pi 的本地 IP地址。Raspberry Pi Connect 可以安全地共享 Raspberry Pi 的屏幕,无需确定本地 IP 地址。
通过本地网络在设备间共享文件
通过 NFS(网络文件系统)、SCP(安全复制协议)、Samba 和 rsync等服务,你可以在本地网络的设备间共享文件,而无需直接控制远程设备。当你需要从另一台设备访问存储在一台设备上的数据时,这些服务会非常有用。
通过互联网远程控制
要从任何连接到互联网的设备上远程控制 Raspberry Pi,你可以
- 通过开放的互联网、VPN 或使用外部服务(如 RealVNC 的云 VNC Viewer)在 Raspberry Pi 上显示 SSH或 vncVNC。
- 使用由 Raspberry Pi 提供的免费屏幕共享及远程SSH服务 Raspberry Pi Connect。
如何查找IP地址
从另一台机器连接到 Raspberry Pi 的大多数方法都要求您知道 Raspberry Pi 的本地 IP 地址。
任何连接到局域网的设备都会被分配一个 IP 地址。为了使用 SSH 或 VNC 从另一台机器连接到 Raspberry Pi,你需要知道 Raspberry Pi 的 IP 地址。如果连接了显示 器,这就很容易了,而且有很多方法可以从网络上的另一台机器远程找到它。
要找到 Raspberry Pi 的本地 IP 地址,请使用以下方法之一。
桌面
将鼠标悬停在系统托盘中的网络图标上,会出现一个工具提示。该工具提示会显示当前连接的网络名称和 IP 地址。
命令行
运行以下命令将你的 IP 地址输出到命令行:
hostname -I
启动输出
如果您在树莓派上使用显示器,并启动到命令行而不是桌面,启动顺序将包括您的 IP 地址,作为登录提示前的最后几条输出信息之一。
网络管理器
您可以使用内置的网络管理器 CLI (nmcli) 访问网络的详细信息。运行以下命令
nmcli device show
您应该会看到与下面类似的输出:
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: D0:3B:FF:41:AB:8A
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: exampleNetworkName
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.1.42/24
IP4.GATEWAY: 192.168.1.1
IP4.ROUTE[1]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 600
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 600
IP4.DNS[1]: 192.168.1.3
IP6.ADDRESS[1]: ab80::11ab:b1fc:bb7e:a8a5/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = ab80::/64, nh = ::, mt = 1024
GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.STATE: 100 (connected (externally))
GENERAL.CONNECTION: lo
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY: --
IP6.ADDRESS[1]: ::1/128
IP6.GATEWAY: --
GENERAL.DEVICE: p2p-dev-wlan0
GENERAL.TYPE: wifi-p2p
GENERAL.HWADDR: (unknown)
GENERAL.MTU: 0
GENERAL.STATE: 30 (disconnected)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: D0:3B:FF:41:AB:89
GENERAL.MTU: 1500
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: off
IP4.GATEWAY: --
IP6.GATEWAY: --
此命令将输出树莓派上可访问的各种网络接口的信息。查看 GENERAL.TYPE 行,了解每个块描述的网络接口类型。例如,"ethernet" 指的是设备上的以太网端口,而 "wifi" 指的是某些设备内置的 Wi-Fi 芯片。您可以根据设备访问互联网的方式,查看不同的输出块来查找 IP 地址:
- 如果设备使用 Wi-Fi 连接互联网,请查看 "wifi" 块
- 如果设备使用以太网端口连接互联网,请检查 "ethernet" 块
确定了正确的网络接口块后,请查找名为 IP4.ADDRESS[1] 的字段以获取 IPv4 地址,或查找 IP6.ADDRESS[1] 以获取 IPv6 地址。您可以忽略这些字段中的斜线和数字(如 /24)。
在上例中,树莓派使用 Wi-Fi 上网。检查 GENERAL.TYPE 字段为 "wifi "的区块,即可找到 IP 地址。在这种情况下,可以使用 IP4.ADDRESS[1] 字段中的 IPv4 地址访问该设备:192.168.1.42。
使用mDNS解析raspberrypi.local
在树莓派OS上,Avahi 服务开箱即支持多播 DNS。
如果您的设备支持 mDNS,您就可以使用树莓派的主机名和 .local 后缀来访问它。新安装的树莓派 OS的默认主机名是 raspberrypi,因此默认情况下,任何运行 树莓派OS的树莓派都会响应以下命令:
ping raspberrypi.local
如果可以连接到 树莓派,ping 会显示其 IP 地址:
PING raspberrypi.local (192.168.1.131): 56 data bytes
64 bytes from 192.168.1.131: icmp_seq=0 ttl=255 time=2.618 ms
若通过控制中心、raspi-config 或 /etc/hostname 修改树莓派系统主机名,Avahi 将自动更新 .local mDNS 地址。若忘记树莓派主机名,可在其他设备安装Avahi,通过avahi-browse浏览本地网络中的所有主机与服务。
路由器设备列表
在网络浏览器中,导航到路由器的 IP 地址。这个地址通常是 http://192.168.1.1,但你也可以在路由器的标签上找 到它。这将带你进入一个控制面板。然后使用你的凭据登录,凭据通常也印在路由器上或随附的文件中。浏览已连接设备或类似设备的列表(所有路由器都不一样),你应该能看到一些你认识的设备。有些设备会被检测为个人电脑、平板电脑、手机、打印机等,所以你应该认出其中一些并排除它们,以确定哪个是你的树莓派。还要注意连接类型;如果你的树莓派是用线缆连接的,可供选择的设备应该会少一些。
nmap命令
nmap 命令(网络映射器)是用于网络发现的免费开源工具,适用于 Linux、macOS 和 Windows。
- 要在 Linux 上安装,请安装
nmap软件包,例如apt install nmap。 - 要在 macOS 或 Windows 上安装,请参阅 nmap.org 下载页面。
要使用 nmap 扫描网络上的设备,你需要知道所连接的子网。首先找到你自己的 IP 地址,换句话说,就是你用来查找树莓派IP地址的电脑的IP地址:
- 在 Linux 上,在终端窗口中输入
hostname -I - 在 MacOS 上,进入 "
系统偏好设置",然后进入 "网络",选择活动网络连接,查看 IP 地址 - 在 Windows 上,进入控制面板,然后在
网络和共享中心下单击 "查看网络连接",选择活动网络连接并单击 "查看此连接的状态"以查看 IP 地址
有了电脑的 IP 地址后,就可以扫描整个子网,查找其他设备了。例如,如果您的 IP 地址是 192.168.1.5,其他设备将使用 192.168.1.2、192.168.1.6、192.168.1.20 等地址。该子网范围的符号是 192.168.1.0/24(包括 192.168.1.0 至 192.168.1.255)。
现在在整个子网范围内使用带有 -sn 标志的 nmap 命令(ping 扫描)。这可能需要几秒钟:
nmap -sn 192.168.1.0/24
Ping 扫描只是 ping 所有 IP 地址,看它们是否响应。对于每个响应 ping 的设备,输出都会显示主机名和 IP 地址,如下所示:
Starting Nmap 6.40 ( http://nmap.org ) at 2014-03-10 12:46 GMT
Nmap scan report for hpprinter (192.168.1.2)
Host is up (0.00044s latency).
Nmap scan report for Gordons-MBP (192.168.1.4)
Host is up (0.0010s latency).
Nmap scan report for ubuntu (192.168.1.5)
Host is up (0.0010s latency).
Nmap scan report for raspberrypi (192.168.1.8)
Host is up (0.0030s latency).
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.41 seconds
在这里,你可以看到一个主机名为 raspberrypi 的设备,其 IP 地址为 192.168.1.8。注意,要查看主机名,必须以 root 身份运行 nmap,在命令前加上 sudo。
使用智能手机获取树莓派的IP地址
Fing 应用程序是一款免费的智能手机网络扫描程序。它适用于 Android 和 iOS。
您的手机和树莓派必 须在同一个网络上,因此请将手机连接到正确的无线网络。
打开 Fing 应用程序后,轻触屏幕右上角的刷新按钮。几秒钟后,你会看到一个列表,其中列出了所有连接到你网络的设备。向下滚动到制造商为 "树莓派" 的条目。你会在左下角看到 IP 地址,在右下角看到 MAC 地址。
使用 SSH 访问远程终端
你可以使用 Secure SHell (SSH) 协议从同一网络的另一台计算机远程访问 Raspberry Pi 的终端。
启用 SSH 服务器
默认情况下,Raspberry Pi OS 禁用 SSH 服务器。请通过以下方式之一启用 SSH:
- 桌面操作
- 烧录新系统
- 终端操作
- 手动
- 从 首选项 菜单,启动 控制中心。
- 导航至 接口 选项卡。
- 选择 SSH 旁边的 启用。
- 单击 好。
在全新安装的 Raspberry Pi OS 上配置 SSH:
- 按照 Install with Imager 指南中的说明操作。
- 在 自定义>远程访问 选项卡中,将 启用SSH 开关切换至激活状态。
- 选择 使用密码认证,即可使用与物理操作树莓派时相同的用户名和密码登录。选择 使用公钥认证,则需配置SSH密钥以实现基于SSH密钥的认证登录。
- 在终端窗口输入
sudo raspi-config。 - 选择 `Interfacing Options·(连接选项)。
- 导航至并选择
SSH。 - 选择
YES。 - 选择
OK。 - 选择
Finish。
- 在启动分区中创建名为
ssh的空文件:
sudo touch /boot/firmware/ssh
- 重新启动机器:
sudo reboot
连接到 SSH 服务器
在电脑上打开一个终端窗口,输入以下命令,用 你尝试连接的 Raspberry Pi 的 IP 地址 替换 <ip address> 占位符,用你的用户名替换 <username> :
ssh <username>@<ip address>
连接成功后,你会看到一个安全警告。输入 "YES" 继续。只有在第一次连接时才会看到此警告。
根据提示输入账户密码。
现在你应该看到 Raspberry Pi 命令提示符:
<username>@<hostname> ~ $
您现在已经远程连接到 Raspberry Pi,可以执行命令。
如果收到 "连接超时" 错误,可能是输入了错误的 Raspberry Pi IP 地址。请检查 Raspberry Pi 的 IP 地址。
通过 SSH 转发 X11
在 macOS 和 Windows 系统上,必须安装第三方 X 服务器才能使用 X11 转发功能。
X11 可通过 SSH 实现图形应用程序。通过 -Y 标志可在 SSH 上转发 X 会话:
ssh -Y <username>@<ip address>
通过身份验证后,你将像往常一样看到命令行。不过,你也可以打开 X 服务器为你呈现的图形窗口。例如,键入以下命令启动 Geany 窗口:
Geany &
配置无密码登录 SSH
要远程访问 Raspberry Pi 而无需在每次连接时提供密码,请使用 SSH 密钥对。
使用 Raspberry Pi Imager 预先配置操作系统映像
使用树莓派映像工具配置操作系统映像时,可预先配置SSH密钥以使用运行工具所在计算机上的现有密钥 。.
- 参照使用Imager安装指南配置启动映像。
- 在 远程访问 选项卡中,将 启用SSH 开关切换至激活状态。.
- 选择 使用公钥认证。
- 若您已在
~/.ssh/id_rsa.pub存储SSH公钥,Imager将自动填充该公钥至文本框。 - 否则请浏览至公钥所在位置。.
- 选择 下一步 继续镜像操作。
手动配置 SSH 密钥
如果已经安装了 Raspberry Pi OS,可以更新现有配置以使用 SSH 密钥验证。
检查现有的 SSH 公钥
要检查用于远程连接 Raspberry Pi 的计算机上是否存在 SSH 公钥,请运行以下命令:
ls ~/.ssh
如果你看到名为 id_ed25519.pub、id_rsa.pub 或 id_dsa.pub 的文件,说明你已经拥有 SSH 密钥。跳过 SSH 密钥对生成,继续 将 SSH 密钥添加到 SSH Identity 列表中。
生成新的 SSH 密钥对
本指南提供了生成新 RSA 密钥的说明。为提高安全性,你可以生成 Ed25519 密钥。向 ssh-keygen 传递 -t ed25519 并在引用公钥和私钥文件名时用 ed25519 替换 rsa 以使用 Ed25519 密钥。
要生成新的 SSH 密钥对,请输入以下命令:
ssh-keygen
当被问及保存密钥的位置时,按 Enter 使用默认位置 ~/.ssh/id_rsa。
当要求输入可选的关键字时,按 Enter 键不输入关键字。
运行以下命令检查 .ssh 目录的内容:
ls ~/.ssh
您应该可以看到文件 id_rsa 和 id_rsa.pub:
authorized_keys id_rsa id_rsa.pub known_hosts
id_rsa 文件包含你的私人密钥。请将其妥善保存在用于远程连接 Raspberry Pi 的计算机上。
id_rsa.pub 文件包含您的公钥。您将与 Raspberry Pi 共享此密钥。当你远程连接 Raspberry Pi 时,它会使用此密钥验证你的身份。
将 SSH 密钥添加到 SSH 身份列表中
启动 SSH 代理:
eval "$(ssh-agent -s)"
接下来,使用以下命令将您的密钥身份添加到 ssh-agent 中:
ssh-add ~/.ssh/id_rsa
复制公钥到 Raspberry Pi
在用于远程连接 Raspberry Pi 的计算机上,使用以下命令将公钥安全地复制到 Raspberry Pi 上:
ssh-copy-id <username>@<ip address>
出现提示时,输入 Raspberry Pi 用户账户的密码。 现在,您无需输入密码即可连接到 Raspberry Pi。
手动复制公钥到 Raspberry Pi
如果你的操作系统不支持 ssh-copy-id,你可以使用 scp 复制公钥。
首先,_在你的 Raspberry Pi_上,创建 Linux 希望找到密钥的目录:
mkdir .ssh
然后,为.ssh目录配置适当的权限:
chmod 700 .ssh
在您常用的计算机上_,使用 scp 将您的公钥复制到 Raspberry Pi 上名为 .ssh/authorized_keys 的文件中:
scp .ssh/id_rsa.pub <username>@<ip address>:.ssh/authorized_keys
上述命令假定您从未授权任何密钥访问 Raspberry Pi。如果以前至少添加过一个密钥,则应在 authorized_keys 文件末尾添加包含公钥的新行,以保留现有密钥。
出现提示时,输入 Raspberry Pi 上用户账户的密码。
然后,_在你的 Raspberry Pi_上,配置 authorized_keys 文件的权限:
chmod 644 .ssh/authorized_keys
现在无需输入密码即可连接到 Raspberry Pi。
使用 VNC 共享屏幕
有时,使用设备工作并不方便。虚拟网络计算(VNC)允许你从另一个设备控制一个设备的桌面 。
VNC 依赖于客户端和服务器。客户端运行在您可以进行物理交互的设备上,例如个人笔记本电脑、台式机、平板电脑或手机。服务器运行在 Raspberry Pi 上。 使用 VNC 时,客户端向服务器发送键盘和鼠标事件。服务器在 Raspberry Pi 上执行这些事件,并向客户端返回屏幕更新。
VNC 客户端会在一个窗口中显示 Raspberry Pi 的桌面。你可以与桌面进行交互,就像在 Raspberry Pi 上工作一样。
Raspberry Pi OS 包含 wayvnc。它提供了一个 VNC 服务器,你可以在设备偏好设置中启用它。
在 Raspberry Pi 上使用 VNC 之前,必须先启用 VNC 服务器。
启用 VNC 服务器
Raspberry Pi OS 支持以图形方式和命令行方式启用 VNC 服务器。
启用后,你可以在 /etc/wayvnc/访问你的 WayVNC 配置。
以图形方式启用 VNC 服务器
- 启动进入 Raspberry Pi 的图形桌面。
- 选择桌面系统托盘中的 Raspberry Pi 图标。
- 从菜单中选择 Preferences > Control Centre。
- 导航至 Interfaces 选项卡。
- 选中 VNC 旁边的单选按钮,使其处于活动状态。
- 单击 OK 按钮保存配置更改。
在命令行上启用 VNC 服务器
使用 raspi-config 在命令行上启用 VNC 服务器。
- 用以下一行打开
raspi-config:
sudo raspi-config
- 导航至Interfaces。按
Enter键选择。 - 选择 VNC。按
Enter键选择。 - 在 Would you like the VNC Server to be enabled?(是否启用 VNC 服务器)下,选择
<Yes>,然后按Enter。 - 按
Enter返回菜单。按Esc退出raspi-config。
连接到 VNC 服务器
要连接到 Raspberry Pi,你需要以下设备:
- 你的 Raspberry Pi 和运行 VNC 客户端的设备连接到同一个网络(例如家庭无线网络或 VPN)
- Raspberry Pi 的主机名或 IP 地址
- Raspberry Pi 账户的有效用户名和密码组合
如果不知道设备的 IP 地址,请参阅 我们关于查找 IP 地址的说明。
- 下载 TigerVNC。你可以从 GitHub 仓库的发布页面 安装最新版本。点击最新版本的链接,找到适合你平台的二进制文件。Windows 用户应下载
exe;macOS 用户应下载dmg;Linux 用户应安装jar。 - 在客户端设备上启动 TigerVNC。在 macOS 和 Windows 上,可以双击二进制文件。 在 Linux 上,用
sudo apt install default-jre安装 java,然后运行java -jar VncViewer-<版本>.jar,用下载的版本替换<version>占位符。 - 在 "VNC 服务器 "字段中输入 Raspberry Pi 的 IP 地址。
- 点击 "选项" 按钮。导航至 "输入" 选项卡。选中 "Show dot when no cursor"(无光标时显示点)旁边的复选框,确保在 TigerVNC 中始终能看到光标。
- 点击 "连接" 按钮,启动与服务器的连接。
- 如果 TigerVNC 警告你 "主机名与服务器证书不匹配",请点击 "是 "按钮继续。
- 如果 TigerVNC 警告您 "证书由未知机构签署",请点击 "是 "按钮为您的 Raspberry Pi 申请例外。
- 提示输入用户名和密码时,请输入您的凭据。
- 点击 "OK" 按钮验证 VNC 服务器。如果凭据正确无误,TigerVNC 将打开一个窗口,其中包含与你在 Raspberry Pi 上的账户相对应的桌面。您应该能够使用鼠标和键盘与桌面进行交互并输 入文本。
使用 Raspberry Pi Connect 远程访问
您可以使用 Raspberry Pi Connect 从其他设备上的浏览器远程访问 Raspberry Pi。Connect 会自动处理配置,因此您不必查找 Raspberry Pi 的本地 IP 地址、网络的公共 IP 地址,也不必修改本地网络防火墙以启用外部访问。
Connect 包括在运行 Wayland 窗口服务器的 Raspberry Pi 型号上进行屏幕共享的功能,以及在所有 Raspberry Pi 型号上进行远程 shell(终端)访问的功能。
更多信息,请参阅 Connect 文档。
使用 Pidoc 远程访问
PiDoc 是由本站提供的树莓派的一站式信息工具,其提供了设备指标监控。还可以通过本站公网堡垒机中转 ssh 的方式随时访问树莓派。适用于持续运行树莓派的用户或是使用树莓派的开发者。如您有一台或多台树莓派,通过PiDoc工具可很好的随时掌握其运行状态。
服务器位于国内,提供更稳定的连接,更高的传输带宽。欢迎免费使用。
更多信息,请参阅 随时掌握你的树莓派状态。