題 .ssh文件夾中私鑰的權限?


我改變了我的權限 .ssh 文件夾,現在當我使用一個使用我的私鑰的軟件時,我每次都要輸入密碼。我的權限應該是什麼? id_rsa 文件,以便每次我使用使用它的應用程序時都不必輸入密碼?

目前我的權限設置為:

-rw-------@ 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
-rw-------@ 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
-rw-------@ 1 Jody  staff  3855 Sep 13 22:35 known_hosts

297
2017-11-26 22:04


起源




答案:


通常,您希望權限為:

  • .ssh 目錄: 700 (drwx------)
  • 公鑰(.pub 文件): 644 (-rw-r--r--)
  • 私鑰(id_rsa): 600 (-rw-------)
  • 最後,您的主目錄不應該由該組或其他人(最多可寫)寫入 755 (drwxr-xr-x))。

我假設你的意思是你必須每次輸入你的系統/用戶密碼,以前你不必輸入。 cdhowie的回答是假設您在生成密鑰時設置了密碼/密碼,如果您這樣做,他說除非您使用ssh代理,否則每次都必須輸入密碼。


506
2017-11-26 22:24



我在其他地方發現,如果使用authorized_keys文件,它應該chmod為640,即-rw-r -----。 - AnneTheAgile
我可以在手冊頁中找到這些信息嗎? - Sonique
我現在回到這個帖子大約30次了。我不敢相信我無法記住它。 - JREAM
唯一重要的事情是.ssh中的任何內容都不可寫入任何人,並且其他任何人都無法讀取任何密鑰。 - Markus Kuhn
@Cerin對目錄的執行權限授予列出該目錄的直接子文件/目錄的能力,文件夾內的文件不“繼承”其父文件夾的執行位。 - Thomas


我一直在努力解決這個問題,最終找出了所需要的東西。更換 $USER 到處都有您要在服務器上登錄的SSH用戶名。如果你想嘗試登錄 root 你需要使用 /root/.ssh 而不是 /home/root/.ssh 這是非root用戶的方式。

  • 服務器上的主目錄不應該被其他人寫入: chmod go-w /home/$USER
  • 服務器上的SSH文件夾需要700個權限: chmod 700 /home/$USER/.ssh
  • Authorized_keys文件需要644權限: chmod 644 /home/$USER/.ssh/authorized_keys
  • 確保這一點 user 擁有文件/文件夾而不是 rootchown user:user authorized_keys 和 chown user:user /home/$USER/.ssh
  • 放入生成的公鑰(來自 ssh-keygen)在用戶的 authorized_keys 服務器上的文件
  • 確保用戶的主目錄設置為您期望的目錄並且包含正確的目錄 .ssh 您一直在修改的文件夾。如果沒有,請使用 usermod -d /home/$USER $USER 解決問題
  • 最後,重啟ssh: service ssh restart
  • 然後確保客戶端具有本地用戶的公鑰和私鑰文件 .ssh 文件夾和登錄: ssh user@host.com

70
2018-06-09 20:39



關於你的第一段,我能夠在我的本地linux盒子上使用公共/私人密鑰與用戶進行ssh(例如 abc),與遠程服務器上的用戶不同(例如, def@123.456.789)。我只需要確保本地用戶擁有本地.ssh文件(例如 abc:abc不是 root:abc)` - Michael
感謝您為新手提供所有步驟和命令,Alex。你的是這裡最有用的答案之一。 - Nav
+1。 “Authorized_keys文件需要644權限”<=這至關重要! - Le Quoc Viet
如果你給.ssh目錄 700 模式,然後有 沒有意義 把r--給團體和其他人,因為 只有你 可以“通過”.ssh然後(假設這些文件沒有硬鏈接)。接受的答案也是如此。默認755就足夠了。 - user3125367


還要確保其他用戶無法寫入您的主目錄。

chmod g-w,o-w ~


32
2018-01-03 03:50



僅供參考,此命令假定您以用戶身份登錄,而不是root用戶 - Alex W


權限不應該與此有任何關係。您的私鑰使用密碼加密,因此您需要輸入密鑰才能使私鑰解密和使用。

您可以考慮運行一個ssh代理,它可以緩存解密的密鑰,並將它們提供給需要它們的應用程序。


5
2017-11-26 22:07



感謝有關ssh代理的其他信息。看起來Leopard內置了一個,所以我想我會這樣做。有點麻煩,但我會問另一個問題。
不要低估權限。他們肯定還會發揮作用。 - Alex W
@AlexW他們確實在ssh的其他方面發揮作用,但不是在問題中問到的人。 - cdhowie
如果私鑰上沒有密碼(自動遠程稱為腳本),它對你沒有幫助。這裡需要權限。 - nerdoc
“我每次都要輸入密碼。我的id_rsa文件的權限是什麼,每次使用使用它的應用程序時都不必輸入密碼?” - Craig Hicks


Felipe是正確的 - 包含.ssh目錄的目錄不能由組或其他目錄寫入。從而 chmod go-w ~ 如果在運行後ssh'ing仍然提示輸入密碼,那麼下一步是合乎邏輯的嘗試 ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys,假設您沒有在ssh-keygen命令中分配密碼,並且您的.ssh目錄位於您的主目錄中。


4
2018-04-17 20:20