如何修復錯誤權限被拒絕(Publickey)

已發表: 2024-01-10
目錄
  • 為什麼它很重要
  • 安全電腦連線的基礎知識
  • 鎖的鑰匙:公鑰
  • 為什麼會出現這個錯誤?
  • 如何修復它
  • 如果仍然不起作用的額外提示
  • 保持平穩運行
  • 常見問題解答
  • 其他資源
  • 包起來

您在使用電腦時是否遇到過「錯誤:權限被拒絕(公用金鑰)」訊息? 這是一個常見錯誤,通常在 SSH 連接期間彈出,這是電腦安全地相互通訊的一種方式。

可以將其視為嘗試使用不適合鎖的鑰匙。 當您看到此錯誤時,這表示您的電腦在與另一台電腦建立安全連結時遇到問題,因為安全性設定中的某些內容不符。

如何修復錯誤:權限被拒絕(Publickey)

為什麼它很重要

安全連線(例如使用 SSH 建立的連線)就像在吵雜的房間中進行私人對話。 您不希望每個人都無意中聽到,尤其是當您分享秘密或個人資訊時,對吧? 這就是為什麼修復這個錯誤如此重要。

它可以確保您的電腦對話的隱私和安全性,確保密碼等敏感資訊的機密性。

安全電腦連線的基礎知識

讓我們深入了解一下 SSH 是什麼。

SSH 代表 Secure Shell,它是電腦透過網路以超級安全的方式相互通訊的特殊方式。 將 SSH 想像成連接兩台電腦的特殊私人隧道。

只有這兩台電腦才能透過此隧道向對方發送訊息,從而確保他們的對話不會被竊聽。

鎖的鑰匙:公鑰

為了確保該隧道的安全,SSH 使用了一種稱為「公鑰身份驗證」的技術。 這就像擁有一個特殊的密碼,但以密鑰的形式存在。 您的電腦有一個與其他電腦共用的唯一金鑰(稱為公鑰)。

把它想像成一次秘密握手。 如果握手不匹配,連線將不會發生,此時您會看到「錯誤:權限被拒絕(公用金鑰)」訊息。

為什麼會出現這個錯誤?

那麼,為什麼會看到這個錯誤呢? 有幾個常見原因:

  1. 關鍵問題:有時,錯誤發生是因為您的特殊密鑰設定有問題。 也許您電腦上的金鑰與您嘗試通話的電腦上的金鑰不符。 這就像試圖將方釘裝入圓孔中一樣——根本行不通。
  2. 錯誤的設定:有時,您電腦上的設定或權限可能設定不正確。 這可能會阻止您的電腦正確使用鑰匙,例如擁有正確的鑰匙但無法將其插入鎖中。

如何修復它

現在您已經了解了發生此錯誤的原因,接下來我們來談談如何修復它。 您可以遵循以下一些步驟:

驗證 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以啟用詳細模式,提供詳細的連線診斷。

檢查伺服器的設定是否正確,尤其是PasswordAuthenticationPubkeyAuthentication

貓等/ssh/sshd_config

附加解決方案:

仔細檢查您使用的 SSH 連線使用者名稱是否正確。

重新啟動 SSH 服務以刷新連線。

 sudo systemctl restart sshd

驗證 SSH 設定檔中的 SSH 連線連接埠。 預設值通常為 22,但可能已變更。

檢查 ssh 端口

檢查伺服器日誌(例如 /var/log/auth.log 或 /var/log/secure)以取得錯誤詳細資訊。

如果仍然不起作用的額外提示

如果您已嘗試這些步驟但仍看到錯誤,您也可以嘗試以下幾個操作:

  1. 對話模式:在 SSH 中開啟詳細模式。 這就像要求您的計算機為您提供有關出現問題的更多線索。 您可以透過將-vvv新增至 SSH 命令來實現此目的,例如ssh -vvv [email protected] 。 當您嘗試連接時,它將為您提供有關所發生情況的更多詳細資訊。
  2. 代理問題:有時,問題可能出在 SSH 代理(一種保存金鑰的工具)。 如果代理無法正常運作,您的金鑰將無法正確顯示。 重新啟動 SSH 代理有時會有所幫助。

保持平穩運行

為了避免將來遇到此錯誤,以下是一些保持一切正常運作的提示:

  1. 金鑰護理:像對待房屋鑰匙一樣對待您的 SSH 金鑰。 確保它們的安全,不要與他人分享。 定期檢查它們是否仍在正常工作。
  2. 定期檢查:就像您定期檢查您的汽車或房屋是否有任何問題一樣,對您的 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_configssh_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 金鑰的設定或使用方式出現問題。 透過按照我們概述的步驟操作,您應該能夠解決問題並重新與其他電腦進行安全對話。