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
。