簡體   English   中英

如何更改 ssh 密鑰上的密碼

[英]How to change password on ssh key

當我嘗試更改 ssh 密鑰上的密碼時,我收到以下錯誤消息:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/username/.ssh/id_rsa' are too open. 
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

這是什么意思? 我怎樣才能解決這個問題?

編輯:這解決了我的問題

sudo chmod 600 ~/.ssh/id_rsa
sudo ssh-keygen -f ~/.ssh/YOU_PRIVATE_SSH_KEY -p

如果終端顯示消息Permissions 0644 root身份運行命令

如果終端顯示消息failed: Permission denied

要解決權限問題,首先需要為主目錄和目錄設置正確的所有權和權限.ssh : 1

sudo chown -R user:user $HOME sudo chmod 750 $HOME sudo chmod -R 700 $HOME/.ssh這會為 .ssh 中的所有文件創建滿足 SSH 要求所需的權限。 SSH 針對各個目錄文件的建議和要求(帶下划線)。ssh 如下所列(來自手冊頁):

~/.ssh/id_rsa (or any PRIV KEY — private, primary key) — 這些文件包含敏感數據 [即您的身份驗證密碼],用戶應該可以讀取,但其他人不能訪問(讀/寫/執行)—例如 0600。ssh 程序將簡單地忽略私鑰文件,如果其他人可以訪問它的話。

sudo chmod 600 ~/.ssh/id_rsa

~/.ssh/config — 由於可能被濫用,此文件必須具有嚴格的權限:用戶可讀/寫,其他人不可寫 - 安裝 0644 就足夠了。

sudo chmod 644 ~/.ssh/config

~/.ssh/authorized_keys——這個文件不是高度敏感,但是推薦給用戶的讀寫權限是0644,其他人不可寫。 2

sudo chmod 644 ~/.ssh/authorized_keys

~ /.ssh/known_hosts——這個文件不是高度敏感的,但是建議用戶有讀寫權限,其他人只讀,因此是0644。

chmod 644 ~/.ssh/known_hosts

~/.ssh/ — 一般沒有要求將此目錄的所有內容保密,但推薦的讀/寫/執行權限是用戶自己的,其他人無法訪問的 — 0700 就足夠了。

sudo chmod 700 ~/.ssh

~ /.ssh /id_rsa.pub(或任何公鑰)——這些文件不是機密文件,任何人都可以(但不一定)可以讀取。


1對目錄的寫入權限允許用戶更改其包含的文件和目錄的權限。 .ssh包含除所有者以外任何人都不得知道的秘密私鑰。 如果不同的用戶對包含目錄 ( .ssh ) 具有寫入權限,他們可以更改該目錄中密鑰的權限並讀取文件。 此參數遞歸地一直應用到文件系統根目錄。

2即使authorized_keys不包含嚴格的秘密——其中的所有密鑰都是公開的——它指定了誰可以登錄:任何擁有(未知但可驗證的)私鑰與文件中列出的公鑰相關聯的人。 因此,對 authorized_keys 的寫入權限必須僅限於帳戶所有者。

雖然 fftcc 的回答為您提供了如何使您的權限符合 ssh 要求的詳細說明,但理解為什么存在這些要求可能會很有用。

您可以將一對私鑰/公鑰視為一個secret和一個test

秘訣就是私鑰:只有您自己知道。 它就像一把門鑰匙。 它恰好適合一把鎖。 鎖驗:公鑰可以驗證私鑰。 (實際的密碼學更有趣:公鑰可以在不知情的情況下測試私鑰,這是門鎖做不到的。)

門鎖是公開的:每個人都可以看到它並嘗試將鑰匙放入其中(相信我,他們這樣做),但它只會接受正確的鑰匙。

如果你讓別人復制私鑰(或你的門鑰匙),他們就可以進入你的服務器(或你的房子)。 因此,沒有人可以讀取該私鑰。

正如另一個答案中所解釋的那樣,在秘密之上的任何目錄中的寫入權限讓用戶遞歸地獲取權限,直到他們到達秘密,這就是為什么 ssh 甚至對它上面的用戶主目錄施加要求,起初看起來很奇怪。 順便說一句,我不確定 ssh 是否只是假定或檢查用戶主目錄之上的目錄也對公眾進行了寫保護:這不一定是給定的。

從這些原則來看,各種文件的必要權限在很大程度上是有意義的。 出現了某種復雜情況,因為人們會假設某些文件,如 authorized_keys,尤其是在服務器端,需要第三方讀取訪問權限,以便 sshd 可以讀取它們。 但是 sshd 以 root 身份運行——畢竟它在特權地址上打開一個套接字——並且可以讀取它想要的任何內容,而不受文件權限的影響。

順便說一句,這意味着您的本地系統管理員實習生可以讀取您用來訪問比特幣錢包的密鑰,chmod 600 my butt。 出於這個原因,可以加密您的私鑰,這乍一看似乎是多余的,但如果您見過我們的管理員,那將是非常有意義的。 這個問題實際上是關於加密私鑰的; 許可問題純粹是偶然的。

形成手冊頁:

ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase]
                   [-P old_passphrase]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM