忽略後量子演算法警告
Wujidadi 問:
在 PowerShell 中執行 git fetch、git pull 等操作時,終端往往會輸出下列警告:
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
該如何使它們消失?
Gemini 答:
這是一個非常及時且重要的問題,這個警告來自於 OpenSSH 客戶端(通常是 Git for Windows 附帶的或系統自帶的 SSH 客戶端)在使用非後量子密碼學 (Non-Post-Quantum Cryptography) 演算法連接 SSH 伺服器時發出的。
這個警告雖然是針對安全性的建議,但在日常使用中,如果您信任您的伺服器,可以暫時隱藏它。
要解決這個問題,您需要在 SSH 客戶端配置中指定一個可接受的後量子密碼交換 (Post-Quantum Key Exchange, KEX) 演算法,或者直接隱藏警告。
由於您是在 PowerShell 環境中,我們主要配置的是 ssh.exe 的行為。
🛠️ 解決方法一:配置 SSH 客戶端 (推薦且根治)
您需要在您的 SSH 配置檔案 (config) 中指定一個可接受的 KEX 演算法,讓 SSH 客戶端知道在連接到特定主機時,即使不使用後量子演算法,也不要發出警告。
步驟 1:找到或建立 SSH 配置檔案
SSH 配置檔案通常位於您的用戶目錄下的 .ssh 資料夾中。
路徑:
C:\Users\<YourUsername>\.ssh\config操作: 在 PowerShell 中執行以下命令,確保該檔案存在並打開它:
if (-not (Test-Path "$HOME\.ssh\config")) { New-Item -ItemType File -Force -Path "$HOME\.ssh\config" | Out-Null } notepad "$HOME\.ssh\config"
步驟 2:添加配置指令
在打開的 config 檔案中,添加以下配置。您可以選擇應用於所有主機(Host *)或僅針對 Git 服務(例如 Host github.com)。
# 忽略後量子演算法警告
Host *
# 添加一個已知的非後量子 KEX 演算法到允許列表中
# e.g., [email protected], diffie-hellman-group14-sha256
# 這樣會告訴 SSH 客戶端,這個演算法是可接受的,不需要警告。
KexAlgorithms [email protected]
# 或者使用更通用的配置來隱藏警告 (如果上述無效)
# 不過這可能會隱藏其他警告,所以不太推薦
# LogLevel ERROR
重點解釋:
KexAlgorithms [email protected]的作用是將[email protected]這個演算法加入到客戶端的可接受列表中,這樣當連接使用這個演算法時,就不會觸發 OpenSSH 的 PQ 警告。
步驟 3:儲存並測試
儲存 config 檔案後,重新執行 git fetch 或 git pull,警告應該會消失。
🛠️ 解決方法二:暫時性隱藏警告 (如果方法一無效)
如果方法一因為您的 SSH 客戶端版本或其他配置衝突而無效,您可以嘗試更簡單的環境變數方法來降低 SSH 的日誌級別,從而隱藏這個警告。
在您的 $PROFILE 檔案中添加以下行:
# 在 $PROFILE 中添加
# 設置 SSH_LOGLEVEL 環境變數為 ERROR
# 這會讓 ssh.exe 忽略 WARNING 級別的輸出
$env:SSH_LOGLEVEL = 'ERROR'
# 注意:這將隱藏所有 SSH 的 WARNING 訊息,包括潛在的重要警告。
執行與測試
重新載入您的 $PROFILE (. $PROFILE) 或重新啟動 PowerShell,然後執行 Git 命令,警告就不會再顯示了。
💡 總結與建議
最推薦的方案是 方法一:修改 C:\Users\<YourUsername>\.ssh\config 檔案,添加 KexAlgorithms [email protected]。這只會針對 PQ 警告,保持其他重要警告的輸出。
您想讓我協助您確認您的 SSH 客戶端版本,或幫您打開 C:\Users\<YourUsername>\.ssh\config 檔案嗎?