如何修復“SSH 許可權被拒絕 (publickey, gssapi-keyex, gssapi-with-mic)”?
介紹
安全外殼協議 (SSH) 是一種網路協議,允許在兩臺遠端計算機之間進行安全通訊。它廣泛用於系統管理、檔案傳輸和其他安全網路服務。
SSH 透過加密傳輸資料,在不安全的網路上提供安全通道,這使得任何人幾乎不可能攔截或修改資料。在當今網路攻擊頻發的數字時代,尤其是在公共 Wi-Fi 等不安全網路上,保護敏感資訊免遭未授權訪問至關重要。
這就是 SSH 發揮作用的地方,因為它透過在傳輸過程中加密資料來提供額外的安全層。使用 SSH,使用者可以遠端訪問他們的伺服器和裝置,而無需擔心他們的資料被洩露。
SSH 許可權被拒絕錯誤概述
雖然 SSH 為遠端連線提供了強大的安全協議,但在嘗試使用此協議在兩臺計算機之間建立連線時,可能會發生錯誤。“許可權被拒絕”錯誤訊息是最常見的錯誤之一。
此錯誤訊息表明使用者沒有必要的許可權或身份驗證憑據來訪問目標裝置。此錯誤可能由於多種原因而發生,並具有不同的變體,例如 publickey 許可權被拒絕、gssapi-keyex 許可權被拒絕或 gssapi-with-mic 許可權被拒絕錯誤。
理解 SSH 許可權被拒絕錯誤
常見的 SSH 許可權被拒絕錯誤
SSH(安全外殼)是在與遠端伺服器進行安全通訊時必不可少的工具。但是,它有時會顯示一些可能導致使用者沮喪的錯誤。
SSH 丟擲的最常見錯誤型別之一是“許可權被拒絕”錯誤。此錯誤最常見的三個變體是“publickey”、“gssapi-keyex”和“gssapi-with-mic”。
每種錯誤型別的成因及其對 SSH 訪問的影響
當使用身份驗證方法(特別是公鑰身份驗證)但無法驗證客戶端的真實性時,就會發生“publickey”錯誤。公鑰身份驗證要求客戶端和伺服器都具有公鑰和私鑰對。
如果它們不匹配,您可能會收到此類錯誤訊息。另一方面,“gssapi-keyex”錯誤發生在使用者嘗試使用 GSSAPI 身份驗證但由於與本地 Kerberos 設定或伺服器端 GSSAPI 配置方式不相容而失敗時。
“gssapi-with-mic”錯誤通常在使用基於 Kerberos 的加密的客戶端和伺服器之間的相互身份驗證出現問題時出現。如果您沒有正確設定 Kerberos 配置,或者您的設定存在相容性問題,通常會出現此問題。
這些錯誤會給依賴 SSH 進行遠端訪問或檔案傳輸功能的使用者帶來重大問題。瞭解每個錯誤的含義及其根本原因將有助於使用者在工作流程中遇到這些錯誤時更有效地進行故障排除。
SSH 許可權被拒絕錯誤的故障排除
逐步指導以排除 publickey 錯誤
如果您在嘗試連線到 SSH 伺服器時收到“許可權被拒絕 (publickey)”錯誤訊息,您可以採取以下幾個步驟來排除此問題。首先,檢查 SSH 金鑰檔案的許可權和所有權。私鑰檔案應具有 600 許可權,並且歸嘗試連線的使用者所有。
公鑰檔案應具有 644 許可權,並且歸同一使用者或 root 所有。接下來,確保您的公鑰已正確配置在您嘗試連線到的伺服器上的 authorized_keys 檔案中。
您可以透過將本地 ~/.ssh/id_rsa.pub 檔案的內容複製到遠端 ~/.ssh/authorized_keys 檔案的新一行來實現此目的。如果這兩個步驟都不能解決問題,請嘗試生成新的 SSH 金鑰對並將其新增到您的 authorized_keys 檔案中。
為此,請在本地終端視窗中執行“ssh-keygen”,然後按照提示操作。然後將您的新公鑰(位於 ~/.ssh/id_rsa.pub 中)複製到遠端 authorized_keys 檔案的新一行中。
逐步指導以排除 gssapi-keyex 和 gssapi-with-mic 錯誤
如果您在嘗試進行 SSH 連線時收到“許可權被拒絕 (gssapi-keyex)”或“許可權被拒絕 (gssapi-with-mic)”錯誤訊息,則 Kerberos 身份驗證可能存在問題。要排除這些錯誤,首先檢查 Kerberos 身份驗證是否在客戶端和伺服器端都已正確配置。透過在每臺機器上執行“krb5-config”命令來檢查兩臺機器是否具有相似的 Kerberos 配置。
如果 Kerberos 配置看起來一切正常,但您仍然無法使用這些方法透過 SSH 連線,則可能需要停用 GSSAPI 身份驗證。這可以透過將以下行新增到您的 /etc/ssh/ssh_config 或 ~/.ssh/config 檔案中來完成:“GSSAPIAuthentication no”。
這將強制 SSH 使用其他身份驗證方法,例如公鑰或基於密碼的身份驗證。透過遵循這些步驟並排除 SSH 中常見的許可權被拒絕錯誤,您可以確保與遠端伺服器安全可靠的通訊。
永續性問題的解決方法
使用 ssh-agent 管理金鑰
SSH-agent 是一種允許您安全管理 SSH 金鑰的程式。它作為後臺程序執行,並將您的私鑰密碼儲存在記憶體中。使用 ssh-agent 的優點是您只需在每個會話中輸入一次密碼,而不是每次連線到遠端伺服器時都輸入。
要使用 ssh-agent,首先透過在終端中執行以下命令啟動代理程序:
eval "$(ssh-agent -s)"
接下來,透過執行以下命令將您的私鑰新增到代理:
ssh-add ~/.ssh/id_rsa
如果您的私鑰具有不同的名稱或路徑,請相應地修改命令。新增後,您可以透過執行 `ssh-add -l` 來驗證金鑰是否已載入到代理中。
配置 sshd_config 檔案以提高安全性
`sshd_config` 檔案是 OpenSSH 守護程式的主要配置檔案。透過修改此檔案,您可以更改與 SSH 伺服器行為和安全性相關的各種選項。
以下是一些可以提高 SSH 安全性的建議更改:
更改預設埠 − 透過更改 SSH 使用的預設埠 (22),攻擊者更難以找到並攻擊您的伺服器。
但是,這不應被視為唯一的保護手段。
停用 root 登入 − 通常認為透過 SSH 停用 root 登入是一種良好的實踐。
這可以防止攻擊者對常見的使用者名稱/密碼組合使用暴力破解攻擊。
啟用雙因素身份驗證 − 雙因素身份驗證 (2FA) 在使用者名稱/密碼身份驗證之上添加了額外的安全層。
這要求使用者同時輸入他們的密碼和由單獨裝置(例如他們的智慧手機)生成的附加程式碼。
使用防火牆規則限制訪問 − 除了配置 `sshd_config` 之外,最好使用防火牆規則來限制對 SSH 伺服器的訪問,這些規則只允許來自受信任 IP 地址的連線。
透過實施這些安全措施,您可以顯著降低透過 SSH 進行未授權訪問的風險。但是,必須記住,沒有任何安全措施是萬無一失的,需要定期監控和更新才能維護安全的系統。
結論
在當今網路威脅和攻擊猖獗的世界中,確保通訊渠道安全至關重要。SSH 透過加密資料和驗證身份來確保系統之間的安全通訊。它提供了一層額外的保護,防止未經授權的訪問和竊聽。
任何重視安全的組織都應確保只有授權人員才能訪問 SSH。但是,即使是最好的安全措施有時也會失敗,導致 SSH 許可權被拒絕錯誤。
好訊息是,這些錯誤可以透過故障排除步驟和高階修復輕鬆解決。以上各節提供了一個逐步指南,用於排除 publickey、gssapi-keyex 和 gssapi-with-mic 錯誤,以及永續性問題的解決方法。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP