1 个不稳定版本

0.1.1 2021年11月18日

#14#ssh-config

MIT/Apache

70KB
686 行代码(不包括注释)

🌐 SSH Cfg

异步解析 ~/.ssh/config

use ssh_cfg::SshConfigParser;

let ssh_config = SshConfigParser::parse_home().await?;
println!("{:?}", ssh_config);

许可证

根据以下任一许可证授权:

您可选其一。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,将如上双许可,不附加任何额外条款或条件。


lib.rs:

异步解析 ~/.ssh/config

use ssh_cfg::SshConfigParser;

#
let ssh_config = SshConfigParser::parse_home().await?;
println!("{:?}", ssh_config);

目前该库仅将值存储为 String。理想情况下,我们会将它们解析为一个强大的数据模型。

SSH配置

ssh(1) 会按以下顺序从以下来源获取配置数据:

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

对于每个参数,将使用第一个获取的值。配置文件包含由 Host 规范分隔的节,并且该节仅应用于匹配规范中给出的模式的宿主机。匹配的宿主机名是命令行中给出的。

由于每个参数的第一个获取的值会被使用,因此应该在文件开始处给出更多特定于主机的声明,并在最后给出一般默认值。

配置文件具有以下格式:

空行和以 # 开头的行是注释。否则,一行是 keyword arguments 的格式。配置选项可以由空白或可选空白分隔,并且恰好有一个 =;后者的格式在用 ssh、scp 和 sftp -o 选项指定配置选项时,可以避免引号空格的需要。参数可以可选地用双引号 (") 括起来,以表示包含空格的参数。

模式

模式由零个或多个非空白字符,*(匹配零个或多个字符的通配符)或 ?(匹配恰好一个字符的通配符)组成。例如,要指定任何属于 .co.uk 域名集合的宿主机的一组声明,可以使用以下模式:

Host *.co.uk

以下模式可以匹配192.168.0.[0-9]网络范围内的任何主机

Host 192.168.0.?

模式列表是一个以逗号分隔的模式列表。模式列表中的模式可以通过在前面加感叹号(!)来取反。例如,要允许从组织内的任何地方使用密钥,除了从dialup池,可以在authorized_keys中使用以下条目

from="!*.dialup.example.com,*.example.com"

依赖关系

~2.5MB
~39K SLoC