OpenSSH 官方网站和源码包格式
OpenSSH 的官方下载地址: https://www.openssh.com/portable.html
OpenBSD 官方镜像:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
在官网或镜像站,你可以找到各个版本的 OpenSSH 源码包,命名格式为:
openssh-X.XpY.tar.gz
X.X 是主版本号(如 10.0)
Y 是补丁号(如 p1)
关于 openSSH 关于 GSSAPI 的配置说明
# GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
解读 /etc/ssh/sshd_config
中的 GSSAPI 配置
1. GSSAPIAuthentication yes
- 作用:启用 GSSAPI 身份验证机制(基于 Kerberos 的单点登录)。
-
详细解释:
- GSSAPI(Generic Security Services Application Program Interface)是一种安全认证框架,通常与 Kerberos 协议集成。
- 当客户端尝试连接时,如果服务器启用此选项,会通过 Kerberos 票据(而非密码或公钥)验证用户身份。
-
典型场景:
用户在企业内网已登录 Kerberos 域(例如 Active Directory),访问 SSH 服务器时自动完成认证,无需二次输入密码。 -
依赖条件:
- 服务器和客户端均需安装 Kerberos 库(如
krb5-user
)。 -
/etc/krb5.conf
需正确配置域和 KDC(密钥分发中心)。 - 服务器主机必须加入 Kerberos 域,并生成有效的
host
凭据(例如host/server.example.com@REALM
)。
- 服务器和客户端均需安装 Kerberos 库(如
2. GSSAPICleanupCredentials no
- 作用:控制用户退出 SSH 会话后是否自动销毁 Kerberos 凭据缓存。
-
详细解释:
-
默认行为:若未显式配置,默认值为
yes
(退出时清理凭据)。 - 设置为
no
表示:
用户通过 SSH 会话获取的 Kerberos 票据(例如使用kinit
或登录时自动获取)不会在断开连接时被清除。 -
影响:
-
便利性提升:用户后续操作(如执行
klist
或访问其他 Kerberos 服务)无需重新认证。 - 安全风险:若攻击者获取服务器访问权限,可能窃取遗留的票据进行横向移动(需结合其他漏洞)。
-
便利性提升:用户后续操作(如执行
-
适用场景:
需要 SSH 会话结束后保持凭据的环境(例如运行后台服务或脚本需持续使用 Kerberos 认证)。
-
默认行为:若未显式配置,默认值为
配置关联与注意事项
-
启用 Kerberos 认证流程:
# 客户端登录示例(已加入域的用户) $ ssh user@server.example.com # 自动使用 Kerberos 票据认证,无需密码
-
安全建议:
-
仅限可信环境:启用
GSSAPIAuthentication
需确保网络和 Kerberos 基础设施安全。 -
权衡清理策略:
GSSAPICleanupCredentials no
增加了便利性,但需评估遗留凭据的风险。生产环境建议结合会话监控和定期票据清理。
-
仅限可信环境:启用
-
调试命令:
# 检查 Kerberos 票据状态(客户端或服务器) $ klist # 测试 GSSAPI 认证过程(客户端) $ ssh -vvv -o GSSAPIAuthentication=yes user@xx.xx.xx.xx
总结
-
GSSAPIAuthentication yes
→ 开启 Kerberos 单点登录,提升用户体验(免密登录)。 -
GSSAPICleanupCredentials no
→ 保持凭据持久化,适合需要会话结束后继续使用 Kerberos 服务的场景,但需注意安全风险。
推荐配置场景:企业内网统一认证环境(如 Active Directory 或 MIT Kerberos 域),同时通过防火墙策略限制 SSH 访问来源。
如何升级 openSSH至10.0p1版本并支持 GSSAPI?
1. 安装编译依赖
yum -y install gcc make zlib-devel openssl-devel pam-devel krb5-devel
2 下载源码包
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p1.tar.gz
3. 编译升级
tar -zxf openssh-10.0p1.tar.gz
cd openssh-10.0p1
./configure \
--prefix=/usr \
--sysconfdir=/etc/ssh \
--with-md5-passwords \
--with-pam \
--with-zlib \
--with-ssl-engine \
--with-kerberos5 \
--with-gssapi
make clean
make
make install
image.png
4. 检查模块支持情况
# 检查新版本是否支持 GSSAPI
/usr/sbin/sshd -T | grep gssapi
# 预期输出(表示支持):
gssapiauthentication yes
gssapicleanupcredentials yes
5. 重启 SSH 服务
systemctl restart sshd
6. 测试 Kerberos 功能
# 测试 SSH 登录(使用 GSSAPI)
ssh -vvv -o GSSAPIAuthentication=yes user@xx.xx.xx.xx