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://opensource.org/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