.ssh文件夹中的私钥权限?


380

我更改了.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

Answers:


638

通常,您希望权限为:

  • .ssh 目录: 700 (drwx------)
  • 公钥(.pub文件):644 (-rw-r--r--)
  • 私钥(id_rsa):600 (-rw-------)
  • 最后,您的主目录不应由该组或其他人(最多755 (drwxr-xr-x))写入。

我假设您的意思是每次都必须输入系统/用户密码,而以前则不必输入。cdhowie的响应是假设您在生成密钥时设置了密码/密码,如果您这样做了,正如他所说,除非您使用ssh代理,否则您每次都必须输入密码。


13
我在其他地方发现,如果使用authorized_keys文件,则应将其更改为640,即-rw-r -----。
AnneTheAgile 2014年

5
在手册页中哪里可以找到此信息?
尼克2014年

131
我现在已经回到该职位约30次。我不敢相信我不记得了。
JREAM 2015年

7
唯一重要的事情是.ssh中的任何内容均不可写给其他任何人,而且任何秘密密钥都不对其他任何人可读。
马库斯·库恩

5
对目录的@Cerin执行权限授予列出该目录的直接子文件/目录的功能,该文件夹内的文件不“继承”其父文件夹的执行位。
托马斯(Thomas)

86

我一直在为此苦苦挣扎,并最终弄清了需要什么。用$USER您要在服务器上登录的SSH用户名替换所有位置。如果您尝试登录,则root需要使用/root/.sshetc等,而不/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_keyschown user:user /home/$USER/.ssh
  • 将生成的公钥(来自ssh-keygen)放入authorized_keys服务器上用户的文件中
  • 确保将用户的主目录设置为您期望的目录,并且包含.ssh您正在修改的正确文件夹。如果不是,请使用usermod -d /home/$USER $USER解决此问题
  • 最后,重新启动ssh: service ssh restart
  • 然后确保客户端在本地用户的.ssh文件夹中具有公钥和私钥文件并登录:ssh user@host.com

关于您的第一段,我可以与本地linux框(例如abc)上的用户(与远程服务器上的用户)使用ssh的公钥/私钥进行交换def@123.456.789。我只需要确保本地用户拥有本地.ssh文件即可(例如abc:abc,不是root:abc)`
Michael

1
感谢您为新手提供所有步骤和命令,Alex。您的答案是这里最有用的答案之一。
2016年

6
+1。“ Authorized_keys文件需要644个权限” <=至关重要!
Le Quoc Viet

如果您给.ssh目录700模式,那么将r--分配给group和其他人是没有意义的,因为只有这样您才能“通过” .ssh(假设这些文件不存在硬链接)。接受的答案也一样。默认755就足够了。
user3125367

根据我的经验,pem文件的400个就足够了。
AT


6

权限与此无关。您的私钥已使用密码加密,因此您需要输入私钥才能解密并使用它。

您可能考虑运行ssh代理,该代理可以缓存解密的密钥并将其提供给需要它们的应用程序。


感谢您提供有关ssh代理的其他信息。看起来Leopard内置了一个,所以我想我会这样做。有点麻烦,但我会问另一个问题。

5
不要低估权限。他们肯定仍然发挥作用。
亚历克斯W

@AlexW它们确实在ssh的其他方面起作用,但不是在问题中被问及的那个方面。
cdhowie 2015年

如果您在私钥上没有密码(自动远程调用脚本的提示音),它将无法为您提供帮助。这里需要许可。
nerdoc '16

“我每次必须输入密码。我的id_rsa文件应具有什么权限,而不必每次使用使用密码的应用程序时都必须输入密码?”
Craig Hicks

4

Felipe是正确的-包含.ssh目录的目录不能由组或其他用户写入。因此,假设您未在ssh-keygen命令中分配密码并且您的.ssh目录位于主目录中,则在chmod go-w ~运行ssh后仍提示您输入密码时,尝试尝试的下一个逻辑操作ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.