1. 简介

ssh 在 Linux 下工作时获取配置参数的顺序如下:

  • 命令行设置的参数;
  • 从用户配置文件 ~/.ssh/config 中读取参数;
  • 从系统配置文件 /etc/ssh/ssh_config 中读取参数。

对于每一项配置参数,读取到的第一个设置将被使用,其余的重复设置将被忽略。

2. 配置文件

用户配置文件和系统配置文件的规则是一样:

  • 配置文件中根据 Host 关键字来划分不同的段,Host 后跟匹配模式,用于 ssh 匹配到对应段;

  • 每个段中设置对应的配置选项,配置选项以 key wordkey=word 的形式组织。对于前一种方式,当值 word 中有空格时,word 需要用双引号括起;后一种则可以不用。

  • 配置文件中,以 # 开头的行为注释行。

常用的关键字如下:

关键字 说明
Host 用于分段,后跟匹配模式,如果其后接了多个匹配模式,不同匹配模式间要用空格分开。
HostName 用于指定服务器 IP 地址或者域名。
User 用于指定服务器用户名。
Port 用于指定服务器端口号,默认为 22
ProxyCommand 用于指定跳板机命令。

简易例子如下:

1
2
3
4
5
6
7
8
9
Host JumpMachine
HostName 172.xx.xx.xx
User usera

Host 10.xx.xx.xx
HostName 10.xx.xx.xx
User userb
Port 22
ProxyCommand ssh -W %h:%p JumpMachine

2.1 匹配模式

Host 关键字后跟的匹配模式由字符构成:

  • 可以使用通配符 * 来同时匹配多个字符;
  • 可以使用通配符 ? 来匹配一个字符;
  • 可以使用否定前缀符 ! 为置反匹配的结果。

【注】! 只起到筛除作用,单使用 ! 模式不会匹配到任何结果。

附录

参考资料:

  • man ssh_config