Google Compute - CentOS 8 更新后 PAM 身份验证失败

Google Compute - CentOS 8 更新后 PAM 身份验证失败

我有一个 Google Cloud 项目,无法访问 CentOS 8 VM。它在 x86_64 上运行内核版本 4.18.0-193.19.1.el8_2.x86_64。我还启用了 selinux 来运行。

昨天在我的 CentOS 8 VM 上运行之前sudo yum update,我能够通过 SSH 并通过 OTP 进行身份验证,没有任何问题。今天,我的所有 OTP 代码都失败了。我不确定更新是否是导致问题的原因,但这是我在这个问题出现之前所做的唯一重大更改。

我尝试在手机的 Google Authenticator 应用上重新同步,但没有用。此外,我尝试了在运行 时创建的每个紧急暂存代码google-authenticator,但都不起作用。据我所知,客户端和服务器之间的时间足够同步。

为了解决这个问题,我启用了串行控制台访问,但是,我记得我从来没有为我的 CentOS 用户设置过密码——只有 SSH 密钥。因此,我无法通过串行控制台进行身份验证,也无法通过 SSH 进行身份验证。

还有什么我可以尝试的吗?

答案1

首先,我建议您检查日志。为此,请重新启动您的 VM 实例(如果可能),然后检查日志Compute Engine-> VM instances-> 单击 NAME_OF_YOUR_VM -> 在VM instance details查找部分日志并单击Serial port 1 (console)以查看任何可以解释您的 VM 实例发生了什么的错误或警告消息。

通过串行控制台获取访问权限请按照以下步骤操作:

  1. 启用串行控制台连接使用gcloud命令:

     gcloud compute instances add-metadata NAME_OF_YOUR_VM_INSTANCE \
     --metadata serial-port-enable=TRUE
    

或前往Compute Engine-> VM instances-> 点击NAME_OF_YOUR_VM_INSTANCE-> 点击EDIT-> 前往部分Remote access并检查Enable connecting to serial ports

  1. 创建临时用户和密码登录:关闭虚拟机并设置启动脚本通过添加在部分Custom metadatastartup-script和值:

     useradd --groups google_sudoers tempuser
     echo "tempuser:password" | chpasswd
    

然后启动您的虚拟机。

  1. 通过串行端口连接到您的虚拟机使用gcloud命令:

     gcloud compute connect-to-serial-port NAME_OF_YOUR_VM_INSTANCE
    

或前往Compute Engine-> VM instances-> 点击NAME_OF_YOUR_VM_INSTANCE-> 然后点击Connect to serial console

  1. 检查更新后出了什么问题。

  2. 禁用通过串行端口访问使用gcloud命令:

     gcloud compute instances add-metadata NAME_OF_YOUR_VM_INSTANCE \
     --metadata serial-port-enable=FALSE
    

或前往Compute Engine-> VM instances-> 点击NAME_OF_YOUR_VM_INSTANCE-> 点击EDIT-> 前往部分Remote access并取消选中Enable connecting to serial ports

请记住,根据文档与串行控制台交互

警告:交互式串行控制台不支持基于 IP 的访问限制,例如 IP 白名单。如果您在实例上启用交互式串行控制台,客户端可以尝试从任何 IP 地址连接到该实例。如果知道正确的 SSH 密钥、用户名、项目 ID、区域和实例名称,任何人都可以连接到该实例。使用防火墙规则来控制对您的网络和特定端口的访问。

此外,请查看文档SSH 故障排除以及第三方文章解决 Compute Engine 被锁定的问题

相关内容