管理多台服务器太麻烦?SSH配置进阶技巧

管理多台服务器太麻烦?SSH配置进阶技巧

你只有一台服务器的时候,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一模一样。

你可以给它起任何名字webdbprod-apihome-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,把所有服务器起了别名:web1web2db1db2cache1……

他说:“现在登录服务器,就像打开桌面上的文件夹一样简单。不用想IP,不用翻笔记,脑子里只有服务器名字。”

效率提升多少?他估算每天至少省了15分钟。一年下来,将近100个小时。


最后一句

~/.ssh/config是SSH最被低估的功能。它不复杂,就是写几行配置。但一旦你配好了,每次ssh 名字登录的那种顺畅感,会让你觉得以前的日子都白过了。

花10分钟配置,往后每天省5分钟。

这笔账,怎么算都划算。

知识库

服务器被黑了吗?5个命令快速自查(附应急清单)

2026-4-10 15:11:58

知识库

Fail2ban安装与配置教程:自动防止Linux服务器SSH暴力破解 (2025)

2025-8-5 10:15:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧