本文說明如何解決問題。您可能會在將執行隨用隨付 (PAYG) SUSE Linux Enterprise Server (SLES) 的 Compute Engine 虛擬機器 (VM) 執行個體連線至 SUSE Subscription Management Tool (SMT) 存放區時,遇到這類問題。
事前準備
- 確認 VM 已連結服務帳戶。
- 確認可從 VM 存取 Service Metadata API。
- 確認 VM 與相應的區域伺服器和 SMT 伺服器之間的網路連線
- 使用 sc-repocheck 工具自動排解問題。
- 請參閱 SUSE 隨用隨付疑難排解指南中的步驟。
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
網路問題
無法解析的網域名稱
如果 VM 無法連線至
smt-gce.susecloud.netSMT 伺服器,可能會發生下列問題:SUSEConnect error: SocketError: getaddrinfo: Name or service not knownping: unknown host smt-gce.susecloud.net這些問題通常是因為 SMT 伺服器網域名稱
smt-gce.susecloud.net解析錯誤所致。這個網域無法在全球解析,因此您必須根據 VM 區域設定 IP 位址,方法如下:檢查
/etc/hosts檔案,確認其中包含smt-gce.susecloud.net網域的項目。cat /etc/hosts | grep -i smt輸出內容類似如下,但 IP 位址可能不同:
# Added by SMT registration do not remove, retain comment as well 108.59.80.221 smt-gce.susecloud.net smt-gce如果
/etc/hosts檔案未包含與上述範例相同的程式碼,請按照下列步驟操作:從 SUSE SMT IP 位址清單中,找出與 VM 區域對應的 IP 位址。
編輯檔案,新增 SUSE SMT IP 位址和任何缺少的資訊。
網路無法使用
即使 VM 能夠解析 Compute Engine Update Server 網域名稱,您仍可能因網路無法使用而遇到下列錯誤:
Unexpected exception. Not ready to read within timeout.Repository 'SLE-Module-Adv-Systems-Management12-Pool' is invalid. Repository 'SLE-Module-Adv-Systems-Management12-Updates' is invalid.以下列舉幾個您在調查期間可能在
/var/log/cloudregister記錄檔中發現的錯誤:WARNING:Unable to remove client registration from server WARNING:HTTPSConnectionPool(host='smt-gce.susecloud.net', port=443): Max retries exceeded with url: /connect/systems (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 110] Connection timed out',)) INFO:Region server arguments: ?regionHint=europe-central2 ERROR:No response from: [('34.118.112.80', None), ('34.116.251.218', None), ('34.116.224.144', None)]如要進一步瞭解問題原因,請執行網路連線測試。 以下範例說明如何使用
cURL測試 HTTPS 連線:curl -sSI -m 5 -o /dev/null \ -w 'Response code (>0 is OK): %{http_code}\n' \ 'https://smt-gce.susecloud.net'指令輸出內容包含 HTTP 回應代碼或錯誤訊息。以下是常見的回應和錯誤:
成功回應:
Response code (>0 is OK): 200要求逾時錯誤:
Response code (>0 is OK): 000 curl: (28) Connection timed out after 5001 milliseconds無法解決的網域錯誤:
Response code (>0 is OK): 000 curl: (6) Could not resolve host: smt-gce.susecloud.net
在某些情況下 (例如嚴格的主機防火牆規則),與
smt-gce.susecloud.net網域相關聯的預設 IP 位址可能無法使用。為確保問題不只與目前的 IP 位址有關,請測試其他區域伺服器的網路連線。擷取區域伺服器清單:前往 SUSE WebUI 取得區域更新伺服器清單。
使用
pint工具,透過 CLI 取得區域更新伺服器清單。安裝必要套件
sudo zypper install python3-susepubliccloudinfo使用下列指令,指定特定區域
pint google servers --region us-central1成功輸出內容會包含 XML 格式的項目清單
<?xml version='1.0' encoding='UTF-8'?> <servers> <server ip="146.148.73.14" name="" region="us-central1" type="regionserver-sles"/> <server ip="162.222.182.90" name="" region="us-central1" type="regionserver-sap"/> <server ip="108.59.80.221" name="smt-gce.susecloud.net" region="us-central1" type="smt"/> <server ip="108.59.85.41" name="smt-gce.susecloud.net" region="us-central1" type="smt"/> <server ip="108.59.80.58" name="smt-gce.susecloud.net" region="us-central1" type="smt"/> </servers>
如要查看 SUSE 伺服器 IP 的完整清單,請參閱下列文件: Google Cloud
VM 設定錯誤可能會導致網路無法使用。如有問題,請執行網路診斷,找出根本原因。
註冊失敗
如果 Cloud NAT 中有使用私人 IP 位址的 VM,可能會發生下列錯誤:
ERROR: Registration failed: Registering system to registration proxy https://smt-gce.susecloud.net command '/usr/bin/zypper --non-interactive refs Python_3_Module_x86_64' failed Error: zypper returned 4 with 'Problem retrieving the repository index file for service 'Python_3_Module_x86_64': Timeout exceeded when accessing 'https://smt-gce.susecloud.net/services/2045/repo/repoindex.xml?credentials=Python_3_Module_x86_64'.如要解決這個問題,請檢查 Cloud NAT 設定,並確認您已將「每個 VM 執行個體的最低通訊埠數量」參數設為至少 256。
詳情請參閱 Registration and zypper failed for Compute Engine instances behind Cloud NAT SUSE 支援公告。
未作答
如果 VM 無法與更新和區域伺服器通訊,可能會看到下列錯誤訊息:
SUSEConnect項錯誤:SUSEConnect error: Errno::ETIMEDOUT: Connection timed out - connect(2) for "smt-gce.susecloud.net" port 443zypper項錯誤:Error retrieving metadata for 'SLE-Module-Adv-Systems-Management12-Pool': Not ready to read within timeout. ...
如果更新和區域伺服器沒有回應,就可能發生這些錯誤。如要確認是否發生這種情況,請檢查
/var/log/cloudregister記錄中是否有類似內容:INFO:Region server arguments: ?regionHint=europe-central2 INFO:Using API: regionInfo INFO:Region server arguments: ?regionHint=europe-central2 INFO:Getting update server information, attempt 1 INFO: Using region server: 130.211.242.136 ERROR: No response from: 130.211.242.136 INFO: Using region server: 35.187.193.56 ERROR: No response from: 35.187.193.56 INFO: Using region server: 162.222.182.90 ERROR: No response from: 162.222.182.90 INFO: Using region server: 130.211.88.88 ERROR: No response from: 130.211.88.88 ERROR: None of the servers responded ERROR: Attempted: [IPv4Address('130.211.242.136'), IPv4Address('35.187.193.56'), IPv4Address('162.222.182.90'), IPv4Address('130.211.88.88')] ... ... ... ERROR:Request not answered by any server after 3 attempts ERROR:Exiting without registration如要解決這個問題,請嘗試下列一或多個做法:
確認 VM 具有外部 IP 位址,或虛擬私有雲子網路使用 NAT (Cloud NAT 或自訂解決方案)。
如果您修改了預設網路轉送規則 (例如限制公開網際網路存取權,或透過內部部署網路轉送流量),請透過預設 Compute Engine 閘道,手動為 SMT IP 新增路徑,方法如下:
前往 Google Cloud 控制台的「Routes」(路徑) 頁面。
在「Route Management」分頁中,找出包含 SUSE SMT IP 位址的路徑,並確認該路徑的下一個躍點是 Compute Engine 預設閘道。
如果缺少路線,請按一下「建立路線」並輸入必要資訊,即可新增路線。
如果您使用內部直通式網路負載平衡器,例如搭配額外的中介網路軟體 (如防火牆或自訂 NAT),請執行下列操作,確保負載平衡器是 VM 流量的下一個躍點:
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下要檢查的 VM 名稱。「VM details」(VM 詳細資料) 頁面隨即開啟。
在「網路介面」部分中,按一下「查看詳細資料」。
在「防火牆和路徑詳細資料」區段中,找出定義所選 IP 位址範圍路徑的路徑。
按一下路徑名稱,確認內部直通式網路負載平衡器或其 IP 位址是下一個躍點。
如果沒有定義所選 IP 位址範圍路徑的路徑,或路徑的下一個躍點與內部直通式網路負載平衡器不同,請將內部直通式網路負載平衡器設為下一個躍點。
如果您使用內部直通網路負載平衡器,請確認該負載平衡器與 VM 位於相同區域。
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
找出要檢查的 VM,並記下其所在區域。
前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
找出使用的內部直通式網路負載平衡器,並檢查是否與 VM 位於相同地區。
如果 VM 和內部直通式網路負載平衡器不在同一區域,請啟用全域存取權。
透過 Proxy 註冊
如果 VM 使用非透明 Proxy 或其他執行中間人 (PITM) 檢查的軟體 (例如 Barracuda CloudGen Firewall、Palo Alto),可能會發生問題。以下範例示範如何嘗試使用 HTTP Proxy 註冊 SLES。
ERROR: Baseproduct registration failed ERROR: Registering system to registration proxy https://smt-gce.susecloud.net Announcing system to https://smt-gce.susecloud.net ... SUSEConnect error: Net::HTTPFatalError: 503 "Service Unavailable"
SUSE 並未正式支援在 Compute Engine 上,透過中間人 (PITM) 和非透明 Proxy 註冊 SLES。由於憑證固定,註冊期間 PITM Proxy 設定失敗。
建議您使用 Cloud NAT 設定,或設定自訂 SMTP 伺服器。
違反 VPC Service Controls
如果貴機構使用 VPC Service Controls (VPC-SC),註冊可能會失敗,且您可能會看到
Request is prohibited by organization's policy錯誤訊息。如果您未在 VPC-SC 政策中為 SUSE Update Infrastructure 設定例外狀況,就可能因輸入或輸出違規而導致這項作業失敗。如要解決這個問題,請將下列元件加入 VPC-SC 政策的允許清單,允許 VM 與 SUSE Update Infrastructure 通訊:
- 更新基礎架構專案:
Suse-gce-smt(專案編號:778092048372) - 服務帳戶:
778092048372@project.gserviceaccount.com - 必要方法:
compute.alpha.InstancesService.GetLicenses
作業系統設定問題
登記狀態不明
如果您不確定隨用隨付 (PAYG) SUSE Linux Enterprise Server (SLES) 是否已註冊,請執行下列指令:
sudo SUSEConnect --status-text輸出內容會顯示 SUSE 產品 (包括 SUSE Linux Enterprise Server) 的版本和註冊狀態。
Installed Products: ------------------------------------------ SUSE Linux Enterprise Server 12 SP5 (SLES/12.5/x86_64) Registered ------------------------------------------ ...如果狀態為
Not Registered,請重新註冊 VM 來修正問題:sudo registercloudguest --force-new基本產品符號連結不正確
如果基本產品連結指向錯誤的產品檔案,可能會發生下列錯誤:
2020-06-17 12:03:56,124 ERROR:Unable to obtain product information from server "108.59.85.41,None" Unprocessable Entity {"type":"error","error":"Unmet product dependencies, activate one of these products first: SUSE Linux Enterprise Server 12 x86_64, SUSE Linux Enterprise Server for SAP Applications 12 x86_64, SUSE Linux Enterprise Server 12 SP1 x86_64, ...","localized_error":"..."} Unable to register modules, exiting.如果
/etc/products.d/baseproduct符號連結指向的產品檔案不正確 (例如sle-module-toolchain.prod),就會發生這個錯誤。如要解決這個問題,請更新
/etc/products.d/baseproduct的符號連結,指向適當的基礎產品檔案:前往
/etc/products.d目錄cd /etc/products.d如果您已安裝 SAP 專用的 SLES,請執行下列指令,將
SLES.prod替換為SLES_SAP.prod:sudo ln -sf SLES.prod baseproduct
無法取得執行個體身分資訊
如果 VM 無法提供執行個體身分資訊,可能會發生下列錯誤。如果服務帳戶未附加至執行個體,或附加的服務帳戶已停用,就可能發生這個問題。
ERROR:Data collected from stderr for instance data collection "b'Unable to access instance identity information\n'"
如要存取身分權杖的執行個體中繼資料,所有 VM 都必須有相關聯的服務帳戶。
詳情請參閱「Public Cloud Infrastructure Update」。
如要檢查 VM 服務帳戶的狀態,請在 VM 上執行下列指令:
curl -s -H 'Metadata-Flavor: Google' \ 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=test'成功回應的範例 (附有身分識別權杖):
eyJhbGciOiJSUzI1NiIsImtpZCI6IjkzOTd0MDQxSHQ2NDNxNzkzUjY1MDIwNzEyMjZPNnppaTdqNTl3eTciLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJ0ZXN0IiwiYXpwIjoiMjY1MDIwMDUyMzgzMjYyNTk0ODU2IiwiZXhwIjoxNjgzNzEyNTQzLCJpYXQiOjE2ODM3MTI4NjQsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsInN1YiI6IjQ1NjA2MzQ5MDg5Mzc0Njg3ODI5NyJ9.EpzQ3NZ8mKStdpH10fL34qsKG0rjQEflzvLJLm2tVNX4xBJAkMhi8lcs5InUEY-QMK3njgbzdzNtD1fXoIfKoeWsqkA8vG3NkBz5zqRrtaB2STcO14H5tjIdTBsrCtET447tRXlGG5cvgMcWnRDZG92-jUZEpWki_Ri4T69X5-bBWkfE2Thm3oSUW4fScdeVOEmOgWnzD2jeVqQ_2YniywvpkT-rLzKfN-5AgN66zgBfXqJVTC90KFMebfiaOoL7z6ZSM9AjZGf45QEMZjxjd-Xzyee6ZWK8s0RE3hJlytb3zYcLt3tJwQ1WhnrC2ToJ-ZmKxxK3xKDLCvCQ6Ny5to
如果 VM 不受影響,您會收到權杖。如果 VM 受到影響,傳回的中繼資料會是類似以下的錯誤訊息:
{ "error": "invalid_request", "error_description": "Service account not enabled on this instance" }如要修正這個問題,請按照下列步驟操作:
停止 VM:
gcloud compute instances stop VM_NAME將服務帳戶新增至 VM:
gcloud compute instances set-service-account VM_NAME \ --service account SERVICE_ACCOUNT \ --no-scopes啟動 VM:
gcloud compute instances start VM_NAME新增缺少的服務帳戶後,請從 VM 執行下列指令,重新註冊 SLES:
sudo registercloudguest --force-new
缺少必要套件
如果 VM 缺少
cloud-regionsrv-client、regionServiceClientConfigGCE、cloud-netconfig-gce或suseconnect-ng等必要套件,註冊作業可能會失敗。如要解決這個問題,請安裝必要套件、清除註冊檔案,然後重新註冊 VM。
安裝任何缺少的套件。
sudo zypper install PACKAGE_NAME將
PACKAGE_NAME替換為缺少的套件名稱。清除舊的註冊檔案:
sudo registercloudguest --clean sudo SUSEConnect --cleanup sudo rm -f /etc/zypp/credentials.d/* sudo rm -f /etc/zypp/repos.d/* sudo rm -f /etc/zypp/services.d/*重新註冊 VM:
sudo registercloudguest --force-new
python3 符號連結有誤
如果執行
registercloudguest時看到ModuleNotFoundError: No module named 'requests'錯誤,可能是因為/usr/bin/python3符號連結有誤 (例如手動覆寫)。Traceback (most recent call last): File "/usr/sbin/registercloudguest", line 34, in <module> import requests ModuleNotFoundError: No module named 'requests'
如要解決這個問題,請重新建立符號連結,指向正確的 Python 版本。
確認執行個體上安裝的 Python 版本:
sudo zypper info python3檢查
python3符號連結:ls -ll /usr/bin | grep -i python3如果連結有誤,請移除並建立指向正確 Python 版本的連結 (例如
python3.6):sudo rm /usr/bin/python3 sudo ln -sf /usr/bin/python3.6 /usr/bin/python3
SSL 憑證驗證失敗
如果
/etc/pki/trust/anchors目錄缺少憑證檔案,可能會看到Curl error 60或ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]等錯誤。以下是您在/var/log/cloudregister中可能會看到的錯誤詳細範例:Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 677, in urlopen ... File "/usr/lib64/python3.6/ssl.py", line 689, in do_handshake self._sslobj.do_handshake() ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)
執行下列指令並查看空白輸出內容,即可確認憑證檔案是否遺失:
ls -lart /etc/pki/trust/anchors如果缺少憑證,輸出內容應為空白:
total 0如要解決這個問題,請嘗試下列其中一種方法:
方法 1:清除並重新註冊
清除所有與註冊相關的檔案,然後強制進行新的註冊。註冊程序會從區域伺服器下載必要憑證。
sudo registercloudguest --clean && \ sudo SUSEConnect --cleanup && \ sudo rm -f /etc/zypp/credentials.d/* && \ sudo rm -f /etc/zypp/repos.d/* && \ sudo rm -f /etc/zypp/services.d/* && \ sudo rm -f /etc/pki/trust/anchors/* && \ sudo sed -i '/^# Added by SMT reg/,+1d' /etc/hosts && \ sudo registercloudguest --force-new方法 2:從正常運作的執行個體複製憑證
如果清除並重新註冊無法解決問題,您可以透過
gcloud compute scp從正常運作的執行個體複製憑證檔案,或是將正常運作的執行個體開機磁碟附加至發生故障的執行個體。如果您在
MOUNT_PATH掛接並掛接工作執行個體的磁碟,請執行下列指令:sudo cp MOUNT_PATH/etc/pki/trust/anchors/* /etc/pki/trust/anchors/ sudo update-ca-certificates sudo cp -pr MOUNT_PATH/usr/lib/regionService /usr/lib/regionService sudo registercloudguest --force-new
libzypp 套件不相容
如果 PAYG SUSE VM 使用 SLES for SAP 15,可能無法註冊,並顯示類似下列內容的錯誤:
ERROR:Baseproduct registration failed Registering system to registration proxy https://smt-gce.susecloud.net ... command '/usr/bin/zypper --non-interactive refs SUSE_Linux_Enterprise_Server_for_SAP_Applications_x86_64' failed Error: zypper returned 1 with 'Error occurred while setting download (curl) options for 'https://smt-gce.susecloud.net/services/2294?credentials=SUSE_Linux_Enterprise_Server_for_SAP_Applications_x86_64': Unexpected exception. Unknown error reading from 'plugin:/susecloud?credentials=SUSE_Linux_Enterprise_Server_for_SAP_Applications_x86_64&path=/services/2294' ... - Error occurred while setting download (curl) options for 'https://smt-gce.susecloud.net/services/2294?credentials=SUSE_Linux_Enterprise_Server_for_SAP_Applications_x86_64':
如果
libzypp套件更新後,導致libcurl4套件版本不相容,就會發生這個問題。libzypp嘗試自我更新時,無法再使用libcurl4向套件位置發出要求。如要解決這個問題,請手動更新
libzypp套件。以下是指令範例,您可能需要調整版本號碼:sudo rpm -i libzypp-17.31.31-150400.3.52.2.x86_64.rpm不支援的 OS 版本或過時的套件
如果您執行的作業系統版本超出一般支援期限 (例如 SLES 12 SP4,一般支援期限已於 2020 年 6 月 30 日結束),註冊可能會失敗。如果 VM 上的套件過舊,無法與 SUSE 更新基礎架構通訊,就會發生這項錯誤。即使網路連線似乎部分成功 (例如使用
telnet連線至 SMT 伺服器時傳回403 Forbidden錯誤),您也可能會在/var/log/cloudregister記錄檔中看到無法連線至 IP 的錯誤。如要檢查套件是否過時,可以查看安裝日期。如果套件超過一年未更新,可能已過時。如要查看套件的上次更新時間,請使用下列指令:
rpm -qa --qf '%{NAME}-%{VERSION} : %{INSTALLTIME:date}\n' | grep PACKAGE_NAME如要解決這個問題,請升級至支援的 SLES 版本。您可能也需要按照 SUSE 技術資訊文件 (TID) 所述,更新特定套件。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-12-04 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-12-04 (世界標準時間)。"],[],[]] -