如何实现非Azure环境下Ubuntu笔记本的AAD登录认证?
如何在漫游Ubuntu笔记本上实现AAD身份认证
可以在任意Linux设备(包括漫游Ubuntu笔记本)上实现Azure Active Directory (AAD)身份认证,无需依赖Azure托管虚拟机或本地AD域服务器。以下是两种可行方案:
方案1:通过SSSD集成AAD(支持离线登录)
此方案适合漫游设备,SSSD可缓存用户凭证,允许无网络时登录。
准备AAD信息
- 确认你的AAD用户账户拥有设备登录权限(可通过Azure门户的设备管理策略配置)
- 记录你的AAD租户域名(例如
contoso.onmicrosoft.com)
安装依赖包
sudo apt update && sudo apt install sssd sssd-tools libnss-sss libpam-sss adcli配置SSSD
- 创建并编辑
/etc/sssd/sssd.conf,替换占位符为你的实际信息:[sssd] services = nss, pam, ssh config_file_version = 2 domains = YOUR_AAD_DOMAIN [domain/YOUR_AAD_DOMAIN] id_provider = ad auth_provider = ad access_provider = ad ad_domain = YOUR_AAD_DOMAIN ad_server = login.microsoftonline.com ad_hostname = $(hostname) cache_credentials = True krb5_store_password_if_offline = True use_fully_qualified_names = False fallback_homedir = /home/%u default_shell = /bin/bash - 设置文件权限:
sudo chmod 600 /etc/sssd/sssd.conf
- 创建并编辑
配置系统认证组件
- 编辑
/etc/nsswitch.conf,确保以下行包含sss:passwd: files systemd sss group: files systemd sss shadow: files sss - 运行
sudo pam-auth-update,勾选SSSD选项后保存退出
- 编辑
加入AAD域并重启服务
sudo adcli join --domain YOUR_AAD_DOMAIN --user YOUR_AAD_USERNAME sudo systemctl restart sssd执行时输入你的AAD用户密码即可完成域加入。
验证登录
尝试切换到AAD用户账户:su - YOUR_AAD_USERNAME首次登录后凭证会被缓存,离线状态下也可正常登录。
方案2:使用Microsoft Authenticator PAM模块(仅在线登录)
若无需离线登录支持,可直接通过OAuth2认证到AAD。
安装PAM模块
sudo apt install libpam-msal配置AAD应用与PAM
- 在Azure门户注册一个原生应用,获取
tenant_id和client_id,并设置重定向URI为msal://auth - 编辑
/etc/pam.d/common-auth,在顶部添加:auth sufficient pam_msal.so tenant_id=YOUR_TENANT_ID client_id=YOUR_CLIENT_ID
- 在Azure门户注册一个原生应用,获取
验证登录
下次登录时,系统会提示你打开Microsoft Authenticator应用扫描二维码,完成验证后即可登录。
注意事项
- 优先选择方案1用于漫游设备,避免无网络时无法登录
- 建议使用Ubuntu 20.04及以上版本,SSSD对AAD的集成支持更稳定
- 可通过Azure AD的条件访问规则限制允许登录设备的用户范围
内容的提问来源于stack exchange,提问作者kristjan
相关产品推荐
相关产品推荐

