如何修復錯誤權限被拒絕(Publickey)
已發表: 2024-01-10- 為什麼它很重要
- 安全電腦連線的基礎知識
- 鎖的鑰匙:公鑰
- 為什麼會出現這個錯誤?
- 如何修復它
- 如果仍然不起作用的額外提示
- 保持平穩運行
- 常見問題解答
- 其他資源
- 包起來
您在使用電腦時是否遇到過「錯誤:權限被拒絕(公用金鑰)」訊息? 這是一個常見錯誤,通常在 SSH 連接期間彈出,這是電腦安全地相互通訊的一種方式。
可以將其視為嘗試使用不適合鎖的鑰匙。 當您看到此錯誤時,這表示您的電腦在與另一台電腦建立安全連結時遇到問題,因為安全性設定中的某些內容不符。
為什麼它很重要
安全連線(例如使用 SSH 建立的連線)就像在吵雜的房間中進行私人對話。 您不希望每個人都無意中聽到,尤其是當您分享秘密或個人資訊時,對吧? 這就是為什麼修復這個錯誤如此重要。
它可以確保您的電腦對話的隱私和安全性,確保密碼等敏感資訊的機密性。
安全電腦連線的基礎知識
讓我們深入了解一下 SSH 是什麼。
SSH 代表 Secure Shell,它是電腦透過網路以超級安全的方式相互通訊的特殊方式。 將 SSH 想像成連接兩台電腦的特殊私人隧道。
只有這兩台電腦才能透過此隧道向對方發送訊息,從而確保他們的對話不會被竊聽。
鎖的鑰匙:公鑰
為了確保該隧道的安全,SSH 使用了一種稱為「公鑰身份驗證」的技術。 這就像擁有一個特殊的密碼,但以密鑰的形式存在。 您的電腦有一個與其他電腦共用的唯一金鑰(稱為公鑰)。
把它想像成一次秘密握手。 如果握手不匹配,連線將不會發生,此時您會看到「錯誤:權限被拒絕(公用金鑰)」訊息。
為什麼會出現這個錯誤?
那麼,為什麼會看到這個錯誤呢? 有幾個常見原因:
- 關鍵問題:有時,錯誤發生是因為您的特殊密鑰設定有問題。 也許您電腦上的金鑰與您嘗試通話的電腦上的金鑰不符。 這就像試圖將方釘裝入圓孔中一樣——根本行不通。
- 錯誤的設定:有時,您電腦上的設定或權限可能設定不正確。 這可能會阻止您的電腦正確使用鑰匙,例如擁有正確的鑰匙但無法將其插入鎖中。
如何修復它
現在您已經了解了發生此錯誤的原因,接下來我們來談談如何修復它。 您可以遵循以下一些步驟:
驗證 SSH 金鑰權限:
為您的私鑰設定正確的權限。
chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/autorized_keys
確保您的公鑰位於伺服器上的~/.ssh/authorized_keys
中。 如果沒有,請使用以下命令新增:
貓 ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> ~/.ssh/authorized_keys'。
調試 SSH 連接
執行ssh -vvv user@hostname以啟用詳細模式,提供詳細的連線診斷。
檢查伺服器的設定是否正確,尤其是PasswordAuthentication
和PubkeyAuthentication
。
貓等/ssh/sshd_config
附加解決方案:
仔細檢查您使用的 SSH 連線使用者名稱是否正確。
重新啟動 SSH 服務以刷新連線。
sudo systemctl restart sshd
驗證 SSH 設定檔中的 SSH 連線連接埠。 預設值通常為 22,但可能已變更。
檢查伺服器日誌(例如 /var/log/auth.log 或 /var/log/secure)以取得錯誤詳細資訊。
如果仍然不起作用的額外提示
如果您已嘗試這些步驟但仍看到錯誤,您也可以嘗試以下幾個操作:
- 對話模式:在 SSH 中開啟詳細模式。 這就像要求您的計算機為您提供有關出現問題的更多線索。 您可以透過將
-vvv
新增至 SSH 命令來實現此目的,例如ssh -vvv [email protected]
。 當您嘗試連接時,它將為您提供有關所發生情況的更多詳細資訊。 - 代理問題:有時,問題可能出在 SSH 代理(一種保存金鑰的工具)。 如果代理無法正常運作,您的金鑰將無法正確顯示。 重新啟動 SSH 代理有時會有所幫助。
保持平穩運行
為了避免將來遇到此錯誤,以下是一些保持一切正常運作的提示:
- 金鑰護理:像對待房屋鑰匙一樣對待您的 SSH 金鑰。 確保它們的安全,不要與他人分享。 定期檢查它們是否仍在正常工作。
- 定期檢查:就像您定期檢查您的汽車或房屋是否有任何問題一樣,對您的 SSH 設定執行相同的操作。 確保設定沒有意外更改並且您的密鑰是最新的。
常見問題解答
如何在 SSH 中設定公鑰身份驗證?
若要在 SSH 中設定公鑰驗證,請先使用ssh-keygen
等指令在本機上產生 SSH 金鑰對。 這將創建一個私鑰 ( id_rsa
) 和一個公鑰 ( id_rsa.pub
)。 接下來,使用ssh-copy-id user@server_ip
將公鑰複製到伺服器的~/.ssh/authorized_keys
檔案。 確保authorized_keys
檔案具有正確的權限(通常為600)以確保安全。 此設定使 SSH 能夠使用基於金鑰的身份驗證而不是密碼。
「SSH 權限被拒絕(公用金鑰)」錯誤的常見原因有哪些?
- 導致此錯誤的常見原因包括:
- SSH 金鑰檔案的權限不正確。 私鑰應該只能由使用者(600)讀取。
- SSH 設定檔(
sshd_config
或ssh_config
)中的設定錯誤。 - 過時的 SSH 用戶端或伺服器軟體可能不支援目前的身份驗證協定。
- 防火牆或安全軟體阻止 SSH 連接埠或連線。
- 在
authorized_keys
檔案中設定的公鑰不正確,或使用錯誤的使用者名稱進行SSH 連線。
如何驗證我的 SSH 金鑰是否已正確新增至伺服器?
要進行驗證,請登入伺服器並檢查~/.ssh/authorized_keys
檔案。 您的公鑰應該列在那裡。 您也可以嘗試透過 SSH 連線到伺服器來測試連線。 如果它不要求輸入密碼,則密鑰已正確新增。
為什麼限制 SSH 金鑰檔案的權限很重要?
限制 SSH 金鑰檔案的權限對於安全性至關重要。 如果其他人可以讀取您的私鑰,他們就有可能存取您的伺服器。 保持私鑰的安全性可確保只有您可以使用它進行身份驗證。
伺服器 SSH 配置的變更是否會導致「權限被拒絕」錯誤?
是的,伺服器 SSH 設定檔 ( etc/ssh/sshd_config
) 的變更可能會導致此類錯誤。 例如,如果PubkeyAuthentication
設定為no
,伺服器將不接受公鑰驗證,導致權限被拒絕錯誤。
如果我的 SSH 用戶端已過時,我該怎麼辦?
如果您的 SSH 用戶端已過時,它可能不支援較新的身份驗證方法,或者可能存在未修補的安全漏洞。 將 SSH 用戶端更新到適用於您的作業系統的最新版本非常重要。
防火牆如何影響 SSH 連線?
如果防火牆配置為限制對 SSH 連接埠(預設值為 22)的訪問,則防火牆可以阻止 SSH 連線。 確保您的防火牆允許用於 SSH 的連接埠上的流量,以防止連線問題。
其他資源
如何在 Linux 2024 中安裝 Sendmail(逐步)
DevOps 的基本 Linux 指令(手冊)
包起來
在本文中,我們探討了導致「錯誤:權限被拒絕(公共金鑰)」的原因以及如何修復它。 請記住,此錯誤就像鑰匙與鎖不相符 – 它通常意味著您的 SSH 金鑰的設定或使用方式出現問題。 透過按照我們概述的步驟操作,您應該能夠解決問題並重新與其他電腦進行安全對話。
Ludjon 是 Codeless 的共同創辦人,對科技和網路充滿熱情。 Ludjon 在建立網站和開發廣泛使用的 WordPress 主題方面擁有十多年的經驗,並已成為該領域的資深專家。