
你只有一台服务器的时候,SSH登录很轻松:ssh root@123.123.123.123,输密码,进去。
当你有了三台:web服务器、数据库服务器、备份服务器。你开始记IP,偶尔还要翻笔记。
当你有了十台:开发环境、测试环境、预发环境、生产环境……你崩溃了。每天花在“连哪台机器”上的时间,比干活还多。
别急。今天教你一个文件,让你从此告别记IP,SSH登录快10倍。
先看一个反常识的数据
一个运维朋友跟我说,他每天要登录十几台服务器。每次都要敲IP,或者从文档里复制粘贴。一天下来,光敲SSH命令就要花十几分钟。
我问他:“你不知道~/.ssh/config吗?”
他愣了:“那是什么?”
很多人用了好几年SSH,都不知道这个文件的存在。今天就把这个隐藏技能教给你。
基础配置:告别记IP
配置文件位置:~/.ssh/config(在你的本地电脑上,不是服务器)。
如果没有这个文件,创建一个:
bash
touch ~/.ssh/config chmod 600 ~/.ssh/config
打开它,加一个配置:
text
Host myserver
HostName 123.123.123.123
User root
Port 22
保存后,你只需要输入:
bash
ssh myserver
效果和ssh root@123.123.123.123 -p 22一模一样。
你可以给它起任何名字:web、db、prod-api、home-nas……只要你能记住。
进阶配置:自动用密钥、保持连接
如果你已经配置了SSH密钥(参考之前的文章),可以指定用哪个私钥:
text
Host myserver
HostName 123.123.123.123
User root
IdentityFile ~/.ssh/id_ed25519
如果你觉得SSH经常断线(尤其是连境外服务器),加这两行:
text
Host myserver
HostName 123.123.123.123
User root
ServerAliveInterval 60
ServerAliveCountMax 10
意思是:每60秒发一个“心跳包”,如果10次都没响应,才断开。这样你泡杯茶回来,SSH还在。
跳板机配置:一条命令直达内网
这是企业里最常见的场景:
- 你本地电脑 → 跳板机(有公网IP) → 内网服务器(只有内网IP)
没有配置的时候,你要:
bash
ssh root@跳板机IP # 然后在跳板机上再敲 ssh root@内网IP
两步,还要在跳板机上输两次密码。麻烦。
用~/.ssh/config,可以一步到位:
text
Host jumpserver
HostName 123.123.123.123
User root
Host innerserver
HostName 192.168.1.100
User root
ProxyJump jumpserver
然后你只需要:
bash
ssh innerserver
SSH会自动先连跳板机,再连内网机器。你只输一次密码(或密钥),一步直达。
反常识点:这个功能需要OpenSSH 7.3以上版本。如果你的本地电脑是Mac或新版Linux,一般都有。Windows用户可以用WSL或Git Bash。
批量配置:用通配符偷懒
如果你有一批IP相似的服务器,比如:
- 192.168.1.101
- 192.168.1.102
- 192.168.1.103
不用写三遍,用通配符:
text
Host 192.168.1.*
User root
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
这样,任何192.168.1.x的服务器都会自动套用这些配置。
我的常用配置模板
分享一份我自己用的配置,你可以直接抄:
text
# 个人博客服务器
Host blog
HostName blog.example.com
User root
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
# 公司跳板机
Host corp-jump
HostName jump.corp.com
User myname
Port 2222
IdentityFile ~/.ssh/id_rsa_corp
# 内网数据库服务器(通过跳板机)
Host corp-db
HostName 10.0.1.100
User root
ProxyJump corp-jump
IdentityFile ~/.ssh/id_rsa_corp
# 家里NAS
Host home-nas
HostName home.example.com
User admin
Port 2222
有了这个文件,你每天登录服务器就变成:
bash
ssh blog ssh corp-db ssh home-nas
不用记IP、不用记端口、不用记用户名。每个服务器一个名字,像呼唤老朋友一样自然。
批量执行命令:不用一台台连
有时候你想在所有服务器上执行同一个命令,比如“查看磁盘空间”。不用一台台登录,用pssh(Parallel SSH)。
安装:
bash
apt install pssh # Ubuntu
然后写一个服务器列表文件servers.txt:
text
blog corp-db home-nas
执行:
bash
pssh -h servers.txt -i "df -h"
所有服务器上的df -h结果一次性显示出来。
一个真实案例
有个朋友管着20多台服务器,每天要检查日志、重启服务、看监控。之前他都是打开一个Excel,里面记着IP和密码,一个一个连。
我帮他配了~/.ssh/config,把所有服务器起了别名:web1、web2、db1、db2、cache1……
他说:“现在登录服务器,就像打开桌面上的文件夹一样简单。不用想IP,不用翻笔记,脑子里只有服务器名字。”
效率提升多少?他估算每天至少省了15分钟。一年下来,将近100个小时。
最后一句
~/.ssh/config是SSH最被低估的功能。它不复杂,就是写几行配置。但一旦你配好了,每次ssh 名字登录的那种顺畅感,会让你觉得以前的日子都白过了。
花10分钟配置,往后每天省5分钟。
这笔账,怎么算都划算。




