Google-Compute-Engine

Google Compute - CentOS 8 PAM 認證在更新後失敗

  • September 23, 2020

我有一個無法訪問 CentOS 8 虛擬機的 Google Cloud 項目。它在 x86_64 上執行核心版本 4.18.0-193.19.1.el8_2.x86_64。我也在啟用 selinux 的情況下執行。

昨天在我的 CentOS 8 虛擬機上執行之前sudo yum update,我能夠通過 OTP 進行 SSH 和身份驗證而沒有問題。今天,我所有的 OTP 程式碼都失敗了。我不確定更新是問題的原因,但這是我在此問題浮出水面之前所做的唯一重大更改。

我嘗試在手機的 Google Authenticator 應用程序上重新同步,但沒有幫助。此外,我已經嘗試了在執行時創建的每個緊急臨時程式碼google-authenticator,但也沒有一個有效。據我所知,客戶端和伺服器之間的時間足夠同步。

作為對此的回應,我啟用了串列控制台訪問,但是,我記得從來沒有為我的 CentOS 使用者設置密碼——只是 SSH 密鑰。因此,我無法通過串列控制台進行身份驗證,也無法通過 SSH 進行身份驗證。

還有什麼我可以嘗試的嗎?

首先,我建議您檢查日誌。為此,請重新啟動您的 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以下命令通過串列埠連接到您的 VM :
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

請記住,根據文件Interacting with the serial console

注意:互動式串列控制台不支持基於 IP 的訪問限制,例如 IP 白名單。如果您在實例上啟用互動式串列控制台,客戶端可以嘗試從任何 IP 地址連接到該實例。如果知道正確的 SSH 密鑰、使用者名、項目 ID、區域和實例名稱,任何人都可以連接到該實例。使用防火牆規則來控制對您的網路和特定埠的訪問。

此外,請查看文件Troubleshooting SSH和第 3 方文章Resolving getting locked out of a Compute Engine

引用自:https://serverfault.com/questions/1034989