还在用U盘传文件?SSH一条命令,文件穿越网络
你是不是还在这样传文件?
本地写好代码 → 导出到U盘 → 插到服务器 → 复制粘贴。或者更离谱——用微信文件助手传到另一台电脑,然后下载、解压、运行,发现少了个文件,再来一遍。

如果你经历过这种痛苦,这篇文章就是为你写的。
今天我们用3分钟,学会程序员传文件的”正确姿势”——SSH远程连接和SCP文件传输。读完你会发现:原来传文件可以这么简单。
SSH是什么?一句话:给你的电脑开了个”后门”
SSH(Secure Shell)是一种加密的网络协议,让你能安全地远程登录另一台电脑,在它的命令行里敲指令,就像你坐在那台电脑前面一样。
打个比方:你在家里,想操作办公室那台电脑。SSH就是一条加密隧道,把你在家里敲的每一条命令,安全地送到办公室电脑上执行,然后把结果传回来。
为什么叫”安全Shell”? 因为早期的远程登录工具(如Telnet)是明文传输的——你的密码在网络上”裸奔”,谁都能看到。SSH把所有数据都加密了,即使在公共WiFi下用也没人能看到你传了什么。
第一步:找到你的”门牌号”
要连接一台远程电脑,你需要三样东西:
– IP地址 — 目标电脑的网络地址,类似”门牌号”
– 用户名 — 你在那台电脑上的账号
– 密码或密钥 — 证明你是你
假设你要连接的电脑IP是 `192.168.1.100`,用户名是 `ubuntu`,那么连接命令就是:
ssh ubuntu@192.168.1.100回车后,系统会问你密码。输入密码时屏幕不会显示任何字符(连星号都没有),这很正常——SSH为了保护密码长度不被猜测,故意不显示。敲完直接回车就行。
第一次连接会弹出一个警告:
The authenticity of host '192.168.1.100' can't be established.别慌,这是SSH在告诉你:”我第一次见到这台电脑,你确定要信任它吗?”输入 `yes` 回车,之后就不会再问了。
连接成功后,你的终端提示符会变成远程电脑的——你现在操作的每一行命令,都在远程电脑上执行。
第二步:传文件,比U盘快100倍
光远程登录还不够,我们最常用的是传文件。这时候SCP(Secure Copy)就出场了。
SCP的语法很简单:
scp 源文件路径 目标路径从本地上传到远程:
scp /home/你/项目/index.html ubuntu@192.168.1.100:/var/www/翻译成人话:把本地 `/home/你/项目/index.html` 这个文件,传到 `192.168.1.100` 那台电脑的 `/var/www/` 目录下。
从远程下载到本地:
scp ubuntu@192.168.1.100:/var/log/app.log ./最后一个 `./` 表示”当前目录”。这条命令把远程电脑上的日志文件下载到你正在操作的文件夹里。
传整个文件夹?加 `-r` 参数:
scp -r /home/你/项目/ ubuntu@192.168.1.100:/home/ubuntu/backup/`-r` 表示递归(recursive),会把整个文件夹连同里面的所有文件一起传过去。
第三步(进阶):免密登录,连密码都不用输
每次输密码很烦?用SSH密钥对,一条命令搞定:
ssh-keygen -t ed25519 -C "你的邮箱"一路回车(不用设密码),会在你的电脑上生成一对”钥匙”:
– 私钥(`~/.ssh/id_ed25519`)— 你自己留着,谁都不能给
– 公钥(`~/.ssh/id_ed25519.pub`)— 可以发到任何你想登录的服务器
把公钥复制到远程电脑:
ssh-copy-id ubuntu@192.168.1.100输一次密码后,以后再用 `ssh ubuntu@192.168.1.100` 就直接连上,密码都不用输。传文件也同理——SCP会自动使用同样的密钥。
安全提醒:私钥相当于你的”万能钥匙”。如果有人拿到你的私钥文件,就能登录你所有配置了公钥的服务器。绝对不要把私钥发到微信、钉钉或上传到GitHub。
常见报错,一分钟排查
| 报错信息 | 原因 | 解决 |
|———|——|——|
| `Connection refused` | 目标电脑没开SSH服务 | 在目标电脑运行 `sudo systemctl start sshd` |
| `Permission denied` | 密码错了,或用户名不对 | 检查用户名和密码,注意大小写 |
| `Host key verification failed` | 目标电脑重装过系统 | 删掉 `~/.ssh/known_hosts` 里对应的那一行 |
| `No route to host` | IP地址写错了,或网络不通 | `ping` 一下目标IP看能不能通 |
总结
– `ssh 用户名@IP地址` — 远程登录
– `scp 本地文件 用户名@IP:远程路径` — 上传文件
– `scp 用户名@IP:远程路径 本地路径` — 下载文件
– `scp -r` — 传整个文件夹
– `ssh-keygen` + `ssh-copy-id` — 免密登录
学会这三条命令,你就不再需要U盘、微信文件助手、甚至FTP软件来传文件了。 而且SSH是程序员的基本功——部署代码、查看日志、远程调试,几乎每天都用到。
下回我们聊聊:怎么用 `grep` 在海量代码中一秒找到你想要的? 敬请期待。
— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn
— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn
