Google Compute - CentOS 8 PAM 認證在更新後失敗
我有一個無法訪問 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 實例所發生情況的錯誤或警告消息。要通過串列控制台訪問,請按照以下步驟操作:
- 使用命令啟用串列控制台連接
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
- 創建臨時使用者和密碼以登錄:關閉您的虛擬機並通過添加部分鍵和值來設置啟動腳本:
Custom metadata
startup-script
useradd --groups google_sudoers tempuser echo "tempuser:password" | chpasswd
然後啟動你的虛擬機。
- 使用
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
- 檢查更新後出了什麼問題。
- 使用以下命令禁用通過串列埠的訪問
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。