## 05.1
SSH 解决什么问题?
网站、App 的程序都不跑在你的电脑上,而是跑在远程服务器上。当服务器出问题要修、程序要更新,你不能跑去机房插显示器——你需要一条加密的远程控制通道,这就是 SSH。
SSH 就像给远方的电脑打了一个加密专线电话:你说「帮我看看 C 盘空间」,对方执行完把屏幕画面实时传回来。全程窃听者只能听到沙沙声(密文)。
SSH 能做的事远不止敲命令:安全传输文件(SFTP/SCP)、加密转发流量(隧道)、Git 推拉代码等,底层都是这条加密通道。
## 05.2
登录方式一:密码
最直觉的方式:ssh 用户名@服务器地址,回车后输入密码。简单直接,适合刚起步。
但密码方式有两个先天弱点:密码可能被暴力猜解(公网服务器每天被扫描尝试成千上万次);每次都要手打。所以正式使用几乎都换第二种方式。
## 05.3
登录方式二:密钥(推荐)
密钥登录是一对数学上配对的钥匙:私钥留在你自己电脑里,谁也不给;公钥放进服务器的 ~/.ssh/authorized_keys 文件。登录时服务器出题验证「你是否有对应私钥」,全程不传输私钥本身。
公钥像一把只有你家有的锁,随便复制发给任何人;私钥是唯一的钥匙,锁在你电脑里。别人拿到锁没用,能开门的只有持钥匙的你——而且验证过程钥匙从不出门,不存在被路上扒走的问题。
# 1. 在自己电脑生成密钥对 $ ssh-keygen -t ed25519 # 2. 把公钥传到服务器 $ ssh-copy-id user@server.example.com # 3. 之后登录不再需要密码 $ ssh user@server.example.com
## 05.4
常见问题
为什么不直接用 Telnet 或 FTP?
它们和 SSH 功能类似,但全程明文:密码和内容在网上裸奔,等同把家门钥匙挂在门口。远程管理场景请一律用 SSH(文件传输用 SFTP),Telnet/FTP 只剩内网调试等极少数用途。
SSH 和 TLS 是竞争对手吗?
不是,二者目标不同。TLS 主要给 HTTP 等「数据传输」加密,SSH 专注「远程控制会话」加密,各自独立发展。它们用的是相似的密码学工具箱。
服务器提示 Connection refused 是怎么回事?
多半是:服务器没开 SSH 服务、端口不是默认的 22、或防火墙拦了。可以用 ssh -p 端口号 用户名@地址 指定非默认端口再试。