Uber的SSH证书PAM模块安装与使用指南
pam-usshuber's ssh certificate pam module项目地址:https://gitcode.com/gh_mirrors/pa/pam-ussh
项目概述
本指南将详细介绍如何安装和使用Uber开发的SSH证书PAM(Pluggable Authentication Module)模块——pam-ussh
。此模块允许基于SSH证书进行用户认证,特别是设计用于增强sudo命令的安全性。它要求用户拥有由特定SSH CA签名的SSH证书,且该证书存储在SSH代理中。
1. 项目目录结构及介绍
项目主要目录与文件结构如下:
.
├── github # 工作流相关文件夹
├── debian # Debian系统的打包配置
├── gitignore # Git忽略文件
├── LICENSE # 许可证文件
├── Makefile # 构建脚本
├── README.md # 主要的项目说明文档
├── pam.go # PAM模块的核心Go代码
├── pam_c.go # PAM接口相关的C绑定代码
├── pam_darwin.go # 针对Darwin系统(如macOS)的特定实现
├── pam_linux.go # 针对Linux系统的特定实现
├── pam_ussh.go # 主PAM模块的实现
├── pam_ussh_test.go # 测试用例
└── ...
Makefile
: 包含构建模块的指令。pam_ussh.go
,pam_c.go
,pam_darwin.go
,pam_linux.go
: 核心源代码,实现了SSH证书验证逻辑并与PAM框架集成。README.md
: 提供了项目简介和基本使用指导。- 测试和配置相关文件: 如
pam_ussh_test.go
用于单元测试,其他配置或依赖关系管理文件则支持项目运行。
2. 启动文件介绍
实际上,对于pam-ussh
而言,并没有直接的“启动文件”需要运行。这是一个PAM模块,其“启动”是通过集成到系统的PAM配置中完成的。例如,在Linux上,你可能会编辑/etc/pam.d/sudo
来加入这一模块的引用:
auth [success=1 default=ignore] pam_ussh.so ca_file=/etc/ssh/trusted_user_ca authorized_principals_file=/etc/ssh/root_authorized_principals
这一步是在配置sudo认证过程时添加的,确保当用户尝试使用sudo时,使用pam_ussh
进行基于SSH证书的认证。
3. 项目的配置文件介绍
系统PAM配置
- /etc/pam.d/*: PAM模块的配置通常分散在这些文件中,比如
sudo
的PAM配置。你需要在这里添加pam_ussh.so
的相关行来启用认证模块。
pam-ussh
特定配置
虽然直接的配置文件不是模块本身提供的,但有两个关键的配置参数通常通过PAM堆栈传递给pam_ussh.so
模块:
- ca_file: 指定SSH公钥证书颁发机构(CA)的路径,默认为
/etc/ssh/trusted_user_ca
。 - authorized_principals_file: 可选,指定一个文件列表,其中包含了允许的主体名,默认为空意味着所有由CA签发的证书都被接受。此文件包含用户名,每个用户名占一行。
为了使模块按需配置,这些值会在PAM堆栈中的调用指令里直接提供或者在系统的特定于服务的PAM配置文件中设置。
综上所述,正确配置并集成pam-ussh
至你的系统PAM环境,需要理解PAM的工作机制,以及如何修改相应的PAM配置文件以引入SSH证书验证逻辑。
pam-usshuber's ssh certificate pam module项目地址:https://gitcode.com/gh_mirrors/pa/pam-ussh