还在用U盘传文件?SSH一条命令,文件穿越网络

你是不是还在这样传文件?

本地写好代码 → 导出到U盘 → 插到服务器 → 复制粘贴。或者更离谱——用微信文件助手传到另一台电脑,然后下载、解压、运行,发现少了个文件,再来一遍。

还在用U盘传文件?SSH一条命令,文件穿越网络封面

如果你经历过这种痛苦,这篇文章就是为你写的。

今天我们用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

滚动至顶部
微信公众号:LC智趣厅

扫码关注微信公众号
LC智趣厅