🍓 第三章 Raspberry Pi OS 基本使用
📄 一句话概括

树莓派和电脑之间传文件,有五条路,按推荐程度排:SFTP(走 SSH,零额外安装,首选)→ scp(命令行,Win10/11 自带)→ Samba 共享(像本地文件夹一样,适合长期互访)→ U 盘(大文件、离线)→ VNC 自带传输(只适合小文件);而所有网络路子的共同前提是同一件事:知道它的 IP 或主机名,加上 SSH 的用户名密码——注意,新版系统没有默认的 pi 账号了,别照老教程抄。

📝 本节和前面几节的关系

本节是第三章的收尾,把前面的三样东西合起来用: 3-5 的命令(scp 就是一条命令)、2-5 的网络知识(IP、主机名、端口 22)、2-4 的 SSH 开关(没有 SSH 就没有 SFTP 和 scp)。 从下一章起你会开始写 Python、接硬件——代码要传上板子、日志要传回来,本节就是那条通道。

一、五条路先对比:选对路,省一半力气

方案 用什么 适不适合新手 适合什么场景 要额外装东西吗
SFTP ⭐ FileZilla / WinSCP 最适合 日常传文件、整个文件夹、图形拖拽 不用装服务端——复用 SSH
scp Windows 自带命令行 适合 快传单个文件、写脚本、远程操作时顺手 不用
Samba 共享 装 samba 服务 中等 把树莓派文件夹当本地盘用,长期频繁互访 要在树莓派上装
U 盘 / 移动硬盘 物理插拔 最简单 大文件(几 GB 以上)、没网、离机拷贝 不用
VNC 自带传输 VNC 客户端 将就 远程桌面时顺手传个小配置文件 不用(但不支持整个文件夹)

一句话结论:先学 SFTP,会用 scp 打底,需要「像本地盘」再上 Samba。

二、所有网络方案的两个共同前提

在这台电脑上(Windows)要先准备两样:

前提一:知道树莓派的地址——IP 或主机名二选一:

192.168.1.42          ← IP(2-5 讲过的查法)
pi-lab.local          ← 主机名(2-4 设的,更推荐,换网络也不用改)

前提二:SSH 凭据(用户名 + 密码)——也就是你 2-2 烧卡时自己设的那一套。

⚠️ 别照老教程抄 `pi` / `raspberry`

当前系统没有默认账号了。 老教程里满屏的 ssh [email protected]、密码 raspberry——照抄会一直登录失败。 正确做法:用户名和密码,就是你烧卡时在 Imager 里填的那个(2-2 讲过)。忘了就去 raspi-config 里重设密码(2-4)。

三、方案一:SFTP(最推荐,图形拖拽)

原理一句话:SFTP = 在 SSH 的加密通道里传文件。所以树莓派这边不用装任何服务端——只要 SSH 开着(2-4 的接口开关),它就能用。

Windows 这边装一个客户端,两个主流选择:

客户端 特点
FileZilla 跨平台、免费、左右两栏对拖,经典之选
WinSCP 更像 Windows 资源管理器,习惯 Windows 的人更顺

连接参数(两个客户端都一样):

字段 填什么
协议 SFTP(不是 FTP!)
主机 pi-lab.local 或树莓派的 IP
端口 22
用户名/密码 你烧卡时设的那套

连上以后怎么用:左边是你电脑、右边是树莓派——从一边拖到另一边就传完了。支持整个文件夹和断点续传,这是它比 VNC 强的地方。

为什么不推荐普通 FTP? 它明文传输(用户名密码和文件内容都在网上裸奔)——服务器课 5.7-5.9 讲过它的原理与短板。SFTP 是同一条路加了加密,能用加密就别用明文。

四、方案二:scp(命令行,Windows 自带)

好消息:Windows 10/11 自带 OpenSSH,所以 scp 命令在 PowerShell 或 Windows 终端里直接能用,不用装任何东西。

语法就一句话:scp 源 目标——左边是源、右边是目标;远程的那一端写成 用户名@主机:路径。

方向一:从 Windows 传到树莓派

scp C:\Users\你的用户名\Downloads\test.txt [email protected]:/home/pi/

方向二:从树莓派拉回 Windows

scp [email protected]:/home/pi/hello.txt ./

方向三:整个文件夹(加 -r)

scp -r C:\Users\你的用户名\project [email protected]:/home/pi/
⚠️ Windows 上写路径的两个小坑

① 路径带空格要加引号:scp "C:\我的 文件\a.txt" pi@…:/home/pi/; ② 如果你用的是 Git Bash 之类的类 Unix 终端,Windows 路径要写成 /c/Users/... 的形式(Linux 用正斜杠,见 3-1)。在 PowerShell 里就按 Windows 写法来,不用转。

首次连接会问一句「是否信任这台主机(指纹)」——输入 yes(2-3 讲过这一步)。

几个常用选项:-C 压缩(传文本有用)、-P 端口(改了默认端口时用,注意是大写 P)、-v 详细输出(排障用)。

五、方案三:Samba 共享(像本地文件夹一样)

什么时候值得折腾:你天天要在两边来回看文件,希望树莓派的文件夹直接出现在 Windows 的「网络」里,双击就进、跟访问本地盘一样。

原理:Samba 实现了 SMB/CIFS 协议——也就是 Windows 自己的文件共享协议(服务器课 4.1-4.3 讲的「文件服务器」民用版)。

三步装好:

sudo apt update
sudo apt install samba                    # ① 装

mkdir -p ~/share                          # ② 建一个要共享的目录

sudo smbpasswd -a pi                      # ③ 给 Samba 设一个专用密码
                                          #    (用户名写你自己的,不是默认 pi)

第四步:告诉 Samba 要共享哪个目录

sudo nano /etc/samba/smb.conf

在文件最后加上一段:

[share]
   path = /home/pi/share
   browseable = yes
   read only = no

第五步:重启服务并取地址

sudo systemctl restart smbd
hostname -I

第六步:在 Windows 上打开它

在资源管理器地址栏输入(两个反斜杠开头):

\\pi-lab.local\share

输用户名密码,进去之后就可以像本地文件夹一样拖文件了。想更方便,可以右键「映射网络驱动器」。

⚠️ Samba 的两条安全线

① SMB 绝对不要暴露到公网(同 2-5 那条红线)——共享只在家里/办公局域网里用; ② 老旧协议(SMBv1)早已被淘汰且有严重漏洞,别为了迁就老设备去开启它。当前系统默认就是更安全的版本,别动。

六、方案四:U 盘 / 移动硬盘(大文件、离线)

最简单的路,但有两条纪律:

  1. 不要在树莓派运行时拔 SD 卡去电脑上拷——那张卡是它的系统盘,拔下来拷东西容易出事,而且麻烦;
  2. 正确做法是插 U 盘:插上后桌面会自动出现图标(3-2 讲过),双击挂载,拖完文件先在文件管理器里点「弹出」,再拔。

什么时候用这条:几 GB 的大文件、没有网络、或者要把系统整个备份出来——网络传慢的时候,物理搬运反而最快(这叫「用脚带宽」,不丢人)。

七、方案五:VNC 自带传输 与 Raspberry Pi Connect

VNC 客户端(如 RealVNC Viewer)自带文件传输:连上远程桌面后,菜单里有「传输文件」。限制:速度一般、不支持整个文件夹、一次一个。

Raspberry Pi Connect(官方服务):在浏览器里就能访问树莓派的桌面和终端,不用配网络、不用记 IP,适合在外面连回家。注意:它走官方中继,账号安全和隐私边界要自己心里有数——真要在外网访问,2-5 提过的 VPN/SSH 隧道同样是更稳的思路。

八、动手 Demo:三种方式各来一遍

前提:树莓派开着、SSH 已开、Windows 与树莓派在同一局域网。

第一遍:用 scp 送一个文件过去(命令行,最基础)

  1. 在 Windows 上打开 PowerShell,随便造一个文件:
"hello from windows" | Out-File -Encoding utf8 C:\Users\你的用户名\Downloads\from-win.txt
  1. 传过去:
scp C:\Users\你的用户名\Downloads\from-win.txt [email protected]:/home/pi/

看到什么算成功:出现一行 from-win.txt 100% 19 ... 之类的进度。

  1. 去树莓派上验收(SSH 或桌面终端):
ls -l ~/from-win.txt
cat ~/from-win.txt

看到什么算成功:cat 打印出 hello from windows。

第二遍:用 scp 把它拉回来(反过来走一遍)

在 Windows 上:

scp [email protected]:/home/pi/from-win.txt C:\Users\你的用户名\Downloads\back.txt

看到什么算成功:Downloads 里出现 back.txt,打开内容一致。

第三遍:装图形客户端试一次 SFTP

用 FileZilla(或 WinSCP)按第三节的参数连接,把整个 ~/lab 文件夹拖到 Windows 桌面上。

看到什么算成功:右侧(树莓派)能看到 lab,拖拽后左侧(本地)出现同名文件夹,里面的文件都在。

失败时对照表:

现象 原因
Permission denied 用户名/密码不对(别用老教程的 pi/raspberry)
Connection refused 树莓派上 SSH 没开(raspi-config → Interface → SSH)
No route to host / 一直卡住 不在同一局域网,或主机名解析不了(改用 IP 试)
Host key verification failed 换过系统/换过卡,旧指纹还在缓存里——清掉重连即可

九、30 秒实验

亲眼看到「文件在两个系统之间走了一趟」。

在树莓派上生成一个带时间的文件:

date > ~/stamp.txt
cat ~/stamp.txt

在 Windows 上把它拉过来:

scp [email protected]:/home/pi/stamp.txt ./

打开它,再和树莓派上 date 的输出对一眼——时间一模一样,说明文件确实是从那台机器上取回来的。

这 30 秒你收获的是:「两台电脑之间传文件」不需要 U 盘、不需要云盘、也不需要一个网站——只要一条命令,走的是你和它之间那条已经加密的通道。

十、常见误区

自测三问 1. 五条传文件的路里,哪条最推荐?为什么它不用在树莓派上装东西?(**SFTP**;因为它**复用 SSH 的加密通道**,SSH 开着就能用) 2. `scp` 的语法里,哪边是源、哪边是目标?远程那一端怎么写?(**左边源、右边目标**;远程写成 `用户名@主机:路径`;传目录加 `-r`) 3. 哪些做法属于踩红线?(**把 22/445 端口转发到公网**;**照老教程用默认 `pi` 账号**;**运行中拔 SD 卡**;**开启过时的 SMBv1**)

相关笔记