公众号旧文
为什么你ssh连服务器会慢?如何改善?
我今天买了第二台洛杉矶的服务器,遇到了一个问题。
明明 CPU 空闲、内存充足,ping 延迟看起来也还可以,但就是:
SSH 登录特别慢。
甚至会出现这样的情况:
- 打开 SSH 要等几秒才出现登录提示
- 输入命令后要过一会儿才显示结果
经过简单的测试,我知道了,是网络路径的问题。
今天就用我这真实案例讲清楚:
为什么 SSH 会慢,以及如何改善。
一、为什么 SSH 会慢?
SSH 的数据其实非常小。
你在终端里输入一个命令,比如:
ls
传输的数据可能只有几十个字节。
所以 SSH 的体验,主要取决于两个因素:
延迟(Latency)和丢包(Packet Loss)。
如果网络路径不好,即使服务器再强,也会感觉非常卡。
例如下面这种典型情况:
天津联通 → 美国洛杉矶服务器
表面看延迟可能只有 180ms,但真实路径可能是:
天津
↓
北京
↓
上海
↓
日本
↓
美国西海岸
如果其中某一段网络拥堵,就会产生:
- 丢包
- TCP 重传
- 延迟抖动
这时候 SSH 就会变得非常不流畅。
二、我的真实案例
我这两台服务器,一台在洛杉矶:
LAX
新买的也是洛杉矶,但网络线路不同:
lax-lite
我从天津联通直接连接 lax-lite 时,体验非常差。
但如果先登录到 LAX,再从 LAX SSH 到 lax-lite,速度却很正常。
路径变成了这样:
天津联通
↓
LAX
↓
lax-lite
为什么这样会更快?
因为美国本地机房之间的网络质量,远远好于跨国线路。
所以:
- 天津 → LAX 走一条比较稳定的线路
- LAX → lax-lite 走本地网络
整体体验反而更好。
三、跳板机
这种解决方案有一个专业名字:
跳板机(Jump Host)。
简单理解就是:
先连接一台网络质量更好的服务器,再从这台服务器访问目标服务器。
结构通常是:
本地电脑
↓
跳板机
↓
目标服务器
在我的例子中:
本地电脑
↓
LAX
↓
lax-lite
这样做有几个好处:
1️⃣ 避开差的跨国线路 2️⃣ 利用同城机房内部高速网络 3️⃣ 提升 SSH 交互体验
很多运维团队都会使用这种架构。
四、如何实现?
实现其实非常简单。
首先在跳板机上配置 SSH 免密登录。
生成密钥:
ssh-keygen -t ed25519
然后把公钥复制到目标服务器:
ssh
-
copy
-
id root
@lax
-
lite
之后就可以直接从跳板机登录:
ssh
root
@lax
-lite
如果使用终端工具,比如 SecureCRT,还可以设置自动执行命令。

登录跳板机后自动运行:
ssh
root
@lax
-lite
这样你在客户端只需要点一次连接,就能直接进入最终服务器。
五、更高级的方案
在 Linux 或 macOS 中,还可以使用 SSH 的 ProxyJump 功能。
在 SSH 配置文件中写:
Host
LAX
HostName
23
.
94
.xxx.xxx
User
root
Host
lax-lite
HostName
45
.
202
.xxx.xxx
User
root
ProxyJump
LAX
之后只需要执行:
ssh
lax-lite
SSH 就会自动完成:
本地 → LAX → lax-lite
整个过程是自动的。
六、总结
如果你发现 SSH 很慢,不要急着怀疑服务器性能。
更可能的原因是:
- 网络路径不好
- 跨国线路拥堵
- 丢包严重
一个简单有效的方法就是:使用跳板机。
通过一台网络更稳定的服务器中转,往往可以显著改善 SSH 体验。
很多大型公司内部的运维系统,其实都是通过跳板机架构来管理服务器的。
所以当你觉得 SSH 很卡的时候,不妨想一想:
问题可能不在服务器,而在你和服务器之间的那条路。