1 个不稳定版本
| 0.1.1 | 2021年11月18日 |
|---|
#14 在 #ssh-config
70KB
686 行代码(不包括注释)
🌐 SSH Cfg
异步解析 ~/.ssh/config。
use ssh_cfg::SshConfigParser;
let ssh_config = SshConfigParser::parse_home().await?;
println!("{:?}", ssh_config);
许可证
根据以下任一许可证授权:
- Apache许可证第2版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
您可选其一。
贡献
除非您明确声明,否则根据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) 会按以下顺序从以下来源获取配置数据:
- 命令行选项
- 用户的配置文件 (
~/.ssh/config) - 系统范围内的配置文件 (
/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