You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:19:29