如何设置ssh客户端的配置文件

文/fcbusquest 2015-01-13 20:00:00

SSH是远程登录Linux主机的最流行工具之一,SSH客户端提供的功能十分强大,具有很多连接配置选项。

如果每次登录都要重复设定一些复杂的连接参数,这很容易导致出错并且降低效率,幸运地是,我们可以通过设定ssh客户端的连接配置文件来简化登录过程中繁琐的参数设定。 本篇教程就是简要讲述ssh客户端解析配置文件的过程以及一些范例。


配置文件

ssh客户端的配置文件位于~/.ssh目录下,配置文件名统一为config; 检查该配置文件是否存在,如果不存在,则创建该文件:

touch ~/.ssh/config

配置文件范例

配置文件的内容格式范例如下:

Host root-upgrade
    User root

Host test-upgrade
    User test

Host *-upgrade
    Port 8822
    HostName 192.168.22.103
    IdentifyFile ~/id_rsa_upgrade

Host *
    Port 7722
    IdentifyFile ~/id_rsa_common

从配置文件中可以看出,配置文件的参数是按照Host块来组织的; 每一个Host块的首部都有一条匹配规则(也就是Host名字),该匹配规则支持通配符; 如果匹配成功了,ssh连接时就会使用已经匹配成功的Host块配置选项。 进行ssh登录时只要指定Host名字(ssh host-name), ssh客户端就会使用host-name~/.ssh/config配置文件中寻找配置信息。

Host关键字和配置参数项的名字大小写是不敏感的。

配置文件的解析过程

SSH客户端对config配置文件的解析过程是按照Host块自上而下进行的, 如果遇到重复设置的配置参数,而该参数并不能设定多个值,则只选取第一个来使用。 参考配置文件范例中的例子,如果在命令行中执行如下命令:

ssh test-upgrade

那么客户端会找到~/.ssh/config配置文件进行自上而下的解析:

  1. Host root-upgrade进行匹配,匹配失败;

  2. Host test-upgrade进行匹配,匹配成功,那么使用该Host块的参数作为连接参数, 也就是登录的用户为test

  3. Host *-upgrade进行匹配,匹配成功,那么登录的端口为8822,登录主机为192.168.22.103, 认证的私钥文件加上~/id_rsa_upgrade(私钥文件在连接时可以设定多个,~/.ssh/id_rsa下的私钥文件是在开始解析时就默认加入到认证的私钥文件中);

  4. Host *进行匹配,匹配成功;虽然该Host块设定使用7722设定连接端口,但是之前Port参数就已经设定该值为8822, 所以忽略该参数,并将~/id_rsa_common加入到进行认证的私钥文件中;

  5. ~/.ssh/config解析完毕。

解析完毕之后,ssh test-upgrade命令等同于以下命令:

ssh test@192.168.22.103 -p 8822 -i ~/.ssh/id_rsa -i ~/id_rsa_upgrade -i ~/id_rsa_common
知识共享许可协议
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

最新文章 全部