ssh 配置文件 (ssh config) 介绍
简介
利用ssh能够安全地登录远程服务器。但是当服务器数量增加时,要记住每个服务器的配置信息是十分耗时耗力的。一般而言,你可能需要提供用户名,主机名,端口以及私钥等信息登录服务器。比如:
1  | ssh -i yourPrivatekey.pem user@hostname -p port  | 
所以ssh 提供了配置文件(ssh config)解决这个问题。利用ssh config, 用户能够简单地利用别名登录服务器:
1  | ssh yourAlias  | 
格式与配置项
用户的配置文件是写在 ~/.ssh/config 中的。
ssh config 的格式比较简单, 通过模式匹配的方式匹配相应的配置,每个配置项都是一对键值对。
配置示例1:
1  | Host 192.168.*  | 
匹配的关键配置项是Host, Host的值是别名。只要匹配到对应的别名就采用相应的配置。因此,Host 将配置文件分为若干段,每一段是从一个Host到下一个Host之前的所有配置项。
Host的值能夠使用通配符,如示例1, Host 192.168.* 能够匹配到以192.168. 开头的所有字符串,并采用后面定义的配置项。
以下是常见的配置项:
    Host 别名
    HostName 主机名
    Port 端口
    User 用户名
    IdentityFile 密钥文件的路径
    IdentitiesOnly 只接受SSH key 登录
    PreferredAuthentications 强制使用Public Key验证
更多配置项请参考官方文档 或者执行 ssh_config 命令
配置优先级
使用 ssh config 后,配置数据根据下列优先级依次获得:
- 命令行选项
 - 用户配置文件 (~/.ssh/config)
 - 系统级配置文件 (/etc/ssh/ssh_config)
 
另外,由于存在通配符,一个别名可能匹配到多个Host段。ssh 命令会使用先获得的配置参数。也就是说,在配置文件中越靠前的就越先被获得。
配置示例2:
1  | Host 192.*  | 
如示例2,执行ssh 192.168.1.1会匹配上两个Host段。所以能夠获得IdentityFile,User,LogLevel 三项配置。同时,由于User 的ubuntu值在root值之前,所以最终User 的取值为ubuntu。