如何限制Azure Linux虚拟机仅允许通过Azure AD登录并禁用其他登录方式
如何限制Azure Linux虚拟机仅允许通过Azure AD登录并禁用其他登录方式
我来帮你搞定这个问题!你遇到的情况是因为仅仅修改SSH配置还不够,而且你之前把UsePAM设为no反而会影响Azure AD的登录(因为AAD SSH登录依赖PAM模块)。咱们一步步来配置,确保只有Azure AD用户能登录,彻底禁用本地密码和新建本地用户的登录权限:
1. 修正SSH服务配置(关键!)
先编辑/etc/ssh/sshd_config,注意不要关闭PAM,正确的配置应该是:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM yes # 这个必须开启,Azure AD登录依赖PAM模块 PubkeyAuthentication no # 如果不需要SSH密钥登录,也一并禁用
保存后重启SSH服务生效:
sudo systemctl restart sshd
2. 通过PAM限制仅允许Azure AD用户登录
编辑/etc/pam.d/sshd,确保Azure AD的PAM模块优先加载,并且拒绝本地用户登录。在文件开头添加以下规则:
# 强制要求通过Azure AD验证登录 auth required pam_aad.so # 拒绝所有本地用户登录,依赖下方的黑名单文件 auth required pam_listfile.so item=user sense=deny file=/etc/security/local_users_deny onerr=succeed
然后创建/etc/security/local_users_deny黑名单文件,把所有本地用户(包括原管理员、重置密码创建的用户)都添加进去,示例内容:
root local-admin-account reset-generated-user
3. 锁定本地管理员账户
为了彻底杜绝本地账户登录可能,直接锁定本地管理员的密码:
sudo passwd -l <你的本地管理员用户名>
这样就算有人知晓密码,也无法通过密码登录该账户。
4. 禁用Azure VM的本地密码重置功能
你提到的“重置密码”功能会自动创建新本地用户,要阻止这个操作,你可以通过Azure门户或CLI设置VM禁用本地密码登录:
- 门户操作:进入VM的「登录」页面,在「本地管理员」板块选择「禁用本地管理员密码」
- CLI命令:
az vm update --name <VM名称> --resource-group <资源组名称> --set osProfile.linuxConfiguration.disablePasswordAuthentication=true
验证配置
完成以上步骤后,测试以下场景确认效果:
- 尝试用本地账户密码登录:应该被拒绝
- 尝试用重置密码创建的新用户登录:应该被拒绝
- 使用Azure AD命令登录:
az ssh vm --name <VM名> --resource-group <RG名>,应该能正常登录
备注:内容来源于stack exchange,提问作者Kagamashi
相关产品推荐
相关产品推荐

