protocol_basics [05] — SSH :22
xiaobai@computer:~$ ssh user@server.example.com

SSH:
安全远程登录的通道

你坐在自己的电脑前,敲的命令却在千里之外的机房服务器上执行——几乎所有程序员管理服务器都靠 SSH(Secure Shell),默认端口 22。

阅读约 8 分钟 · 零基础

## 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 端口号 用户名@地址 指定非默认端口再试。