教程

SSH 配置文件(~/.ssh/config)实用指南

在 ~/.ssh/config 里按主机保存 SSH 设置,用 "ssh myserver" 代替一长串命令。格式、你真正会用的选项(IdentitiesOnly、ServerAliveInterval、ProxyJump)、通配符、以及移动端的等价物。

CC Chen Chen· 创始人·2026 年 6 月 13 日·阅读 6 分钟

SSH 配置文件是什么

位于 ~/.ssh/config 的 SSH 配置文件让你按主机保存设置——名字、用户、端口、密钥和几十个选项——这样你不用敲 ssh -i ~/.ssh/work_key -p 2222 [email protected],只敲 ssh myserver 就行。对任何在终端里用 SSH 的人,这是最大的一项体验升级。本文讲格式、你真正会用的选项、以及同样的思路在移动端怎么实现。

基本格式

~/.ssh/config(权限 600),每台主机加一个块:

Host myserver
    HostName 203.0.113.7
    User deploy
    Port 2222
    IdentityFile ~/.ssh/work_key

现在 ssh myserver 就展开成完整命令。Host 是你敲的别名;HostName 是真实地址。光这一点就值 90% 了。

你真正会用的选项

选项作用
HostName真实主机名或 IP
User登录用户名
Port非默认端口(若你挪离了 22)
IdentityFile用哪把私钥
IdentitiesOnly yes递那把密钥——修 too many authentication failures
ServerAliveInterval 60保活——修闲置 broken pipe 掉线
ProxyJump bastion经跳板机中转
HostKeyAlgorithms +ssh-rsa老服务器兼容(no matching host key)

通配符与默认值

Host 接受模式,设置自上而下生效,所以你可以给所有主机设默认、再按主机覆盖:

Host *
    ServerAliveInterval 60
    AddKeysToAgent yes

Host *.internal.example.com
    User admin
    ProxyJump bastion

Host bastion
    HostName 198.51.100.9
    User jump

Host * 块给所有地方设合理默认;更具体的块在其上叠加。把具体主机放在宽通配符上面——每个选项第一个匹配的生效。

一行搞定跳板机

要连一台只能经跳板机访问的私有服务器,ProxyJump 自动串起这几跳:

Host db
    HostName 10.0.0.5
    User postgres
    ProxyJump bastion

然后 ssh db 就透明地经 bastion 路由。(像 Tailscale 这样的网格 VPN 是另一种选择,能彻底省掉跳板机。)

移动端的等价物

移动 SSH 客户端不用 ~/.ssh/config 文件——它们把同样的信息按连接存在 App 里:每个保存的主机有自己的用户、端口、密钥、保活设置,在表单里编辑而不是文本文件。好处一样(配一次、永久复用);机制是 UI 而不是配置文件。在 TermAI 里,每条连接带自己的认证和选项,所以 IdentitiesOnly 或自定义端口的等价物,就是那条连接上的一个字段。

手机上用保存设置连接的一条会话
~/.ssh/config 的移动版:每条连接存自己的主机、用户、端口、密钥——在表单里配一次,一点即复用。

常见问题

SSH 配置文件在哪?
Linux 和 macOS 上是 ~/.ssh/config(没有就建,权限 600)。Windows 上是 C:\Users\You\.ssh\config

怎么给某台主机用特定密钥?
在那台主机的块里加 IdentityFile ~/.ssh/that_keyIdentitiesOnly yes——第二行让客户端不再递其它密钥。

Host 和 HostName 有什么区别?
Host 是你敲的别名(ssh myserver);HostName 是它解析到的真实地址。

移动 SSH App 用 ~/.ssh/config 吗?
不用——它们把同样的设置按连接存在 App 的 UI 里。便利完全一样;是表单而不是文件。

快速事实

  • 位置:~/.ssh/config(权限 600);Windows C:\Users\You\.ssh\config
  • 核心:Host 别名 → HostNameUserPortIdentityFile
  • 最有用的选项:IdentitiesOnly yesServerAliveInterval 60ProxyJump
  • 模式:Host * 设默认;第一个匹配生效,具体块放通配符上面
  • 移动端:App 按连接存同样的设置——是表单,不是文件
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog