SSH 配置文件 (SSH config) 介绍

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
2
3
4
5
6
7
8
Host 192.168.*
IdentityFile ~/myPrivatekey.pem
LogLevel QUIET
User ubuntu

Host hello
HostName 172.26.1.1
...

匹配的关键配置项是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 后,配置数据根据下列优先级依次获得:

  1. 命令行选项
  2. 用户配置文件 (~/.ssh/config)
  3. 系统级配置文件 (/etc/ssh/ssh_config)

另外,由于存在通配符,一个别名可能匹配到多个Host段。ssh 命令会使用先获得的配置参数。也就是说,在配置文件中越靠前的就越先被获得。

配置示例2:

1
2
3
4
5
6
Host 192.*
IdentityFile ~/myPrivatekey.pem
User ubuntu
Host 192.168.*
LogLevel QUIET
User root

如示例2,执行ssh 192.168.1.1会匹配上两个Host段。所以能夠获得IdentityFileUserLogLevel 三项配置。同时,由于Userubuntu值在root值之前,所以最终User 的取值为ubuntu

Author: 方镇澎
Link: http://fzp.github.io/2018/05/09/2018-5-10-ssh-config/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.