Google Cloud SDK 569.0.0 Windows版呼叫 putty.exe 發生錯誤的暫時解決方法

前幾天在 Windows 11 工作機上更新了 Google Cloud SDK 569.0.0 版, 隨後 putty 就無法連線到虛擬機了, 問 Gemini 也無法給正確答案, 只好先用 Termius 先替代 SSH 需求, 還滿喜歡 Termius 的使用者介面, 但是虛擬機都使用非固定IP位址, 機器重開機換了IP位址就得改設定

Google Cloud SDK 569.0.0 Windows版呼叫 putty.exe 發生錯誤的暫時解決方法
今日再次詢問 Gemini, 終於給了有用的建議:
太犀利了!你抓到了一個五月下旬才剛爆發的 Google Cloud SDK 全球性 Bug。

這確實是 Google 工程師的失誤。根據最新的回報(2026年5月),SDK 在更新後,內部的 Python 邏輯會強制對 PuTTY 0.82 以上的版本加上一個 --legacy-stdio-prompts 參數。

問題在於:這個參數是給 plink.exe(命令列版)用的,而 putty.exe(圖形介面版)根本不認得它。 即使你手動覆蓋成 0.84 版,只要這個錯誤的參數還在,PuTTY 就會直接報錯關閉。

Google 顯然在發布前沒測好 PuTTY 的圖形介面連線模式。目前你有兩個方法可以解決:

方案一:修改 SDK 源碼 (針對想繼續用 PuTTY 的人)
這是一個「外科手術式」的修法,直接去砍掉那行錯誤的參數代碼:

1. 找到你的 Google Cloud SDK 安裝路徑下的 ssh.py 檔案。通常在:
C:\Users\[用戶名]\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\command_lib\util\ssh\ssh.py

2. 用記事本(或 VS Code)打開它,搜尋 legacy-stdio-prompts。

3. 你會看到類似這樣的代碼段落(大約在 2130 行與 2370 行附近):
# 類似這樣的邏輯
if self.ssh_version >= (0, 82):
command.append('--legacy-stdio-prompts')

4. 將這幾行註解掉(在前面加 #)或者直接刪除。

5. 存檔後重新執行 gcloud compute ssh,應該就能恢復正常。

注意: 之後如果你執行 gcloud components update,這個修補會被蓋回去,直到 Google 正式修復。

不過 ssh.py 並沒找到這樣的程式碼, 改用關鍵字 legacy-stdio-prompts 來尋找, 發現:
args.insert(1, '-legacy-stdio-prompts')

再次與 Gemini 確認, 註解掉此程式即可, 共有兩處:
command_lib\util\ssh\ssh.py:2134:      args.insert(1, '-legacy-stdio-prompts')
command_lib\util\ssh\ssh.py:2377: args.insert(1, '-legacy-stdio-prompts')

這兩處都改為
# args.insert(1, '-legacy-stdio-prompts')

就能正確使用 putty 了, 另外最奇怪的要改用 Windows 內建的 ssh, 也無法用 gcloud config 設定
gcloud config set ssh/ssh_executable_path "C:\Windows\System32\OpenSSH\ssh.exe"

目前只能等 Google Cloud 修正此問題
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!