远程访问
远程访问简介
有时,您需要在不连接显示器、键盘和鼠标的情况下访问 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 配置。