我在.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


评论

/ bin / bash查找.ssh / -type f -exec chmod 600 {} \ ;;找到.ssh / -type d -exec chmod 700 {} \ ;;查找.ssh / -type f -name“ * .pub” -exec chmod 644 {} \;

#1 楼

通常,您希望权限为:



.ssh目录:700 (drwx------)

公钥(.pub文件):644 (-rw-r--r--)

私钥(id_rsa):600 (-rw-------)

最后,组或其他人(最多755 (drwxr-xr-x))不能写入您的主目录。

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

评论


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

–AnneTheAgile
2014年9月11日下午21:19

在手册页中哪里可以找到此信息?

–Sonique
2014年11月17日15:56

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

– JREAM
15年4月2日在21:35

唯一重要的事情是.ssh中的任何内容均不可写给任何其他人,而且任何秘密密钥都不可被其他任何人读取。

–马库斯·库恩(Markus Kuhn)
15年9月30日在11:56

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

–托马斯
17年1月29日在8:42

#2 楼

我一直在为此苦苦挣扎,并最终弄清了需要什么。将$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_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)上的用户(与def@123.456.789)不同,使用公钥/私钥与ssh通讯。我只需要确保本地用户拥有本地.ssh文件(例如abc:abc,而不是root:abc)`

–迈克尔
15/12/22在9:41



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

–Nav
16 Mar 4 '16 at 6:06

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

– Le Quoc Viet
17年4月4日在17:46

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

–user3125367
17年8月21日在9:39

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

– A T
18年11月14日在12:24

#3 楼

还请确保您的主目录不可被其他用户写入。

chmod g-w,o-w ~

评论


仅供参考,此命令假定您以用户身份而不是root用户身份登录

– Alex W
2015年6月9日在18:40



#4 楼

由于希望查看手册页建议转换为权限,因此将其作为单独的答案发布。

基于手册页引号的摘要(末尾链接):

+------------------------+-------------------------------------+-------------+-------------+
| Directory or File      | Man Page                            | Recommended | Mandatory   |
|                        |                                     | Permissions | Permissions |
+------------------------+-------------------------------------+-------------+-------------+
| ~/.ssh/                | There is no general requirement to  | 700         |             |
|                        | keep the entire contents of this    |             |             |
|                        | directory secret, but the           |             |             |
|                        | recommended permissions are         |             |             |
|                        | read/write/execute for the user,    |             |             |
|                        | and not accessible by others.       |             |             |
+------------------------+-------------------------------------+-------------+-------------+
| ~/.ssh/authorized_keys | This file is not highly sensitive,  | 600         |             |
|                        | but the recommended permissions are |             |             |
|                        | read/write for the user, and not    |             |             |
|                        | accessible by others                |             |             |
+------------------------+-------------------------------------+-------------+-------------+
| ~/.ssh/config          | Because of the potential for abuse, |             | 600         |
|                        | this file must have strict          |             |             |
|                        | permissions: read/write for the     |             |             |
|                        | user, and not accessible by others. |             |             |
|                        | It may be group-writable provided   |             |             |
|                        | that the group in question contains |             |             |
|                        | only the user.                      |             |             |
+------------------------+-------------------------------------+-------------+-------------+
| ~/.ssh/identity        | These files contain sensitive data  |             | 600         |
| ~/.ssh/id_dsa          | and should be readable by the user  |             |             |
| ~/.ssh/id_rsa          | but not accessible by others        |             |             |
|                        | (read/write/execute)                |             |             |
+------------------------+-------------------------------------+-------------+-------------+
| ~/.ssh/identity.pub    | Contains the public key for         | 644         |             |
| ~/.ssh/id_dsa.pub      | authentication.  These files are    |             |             |
| ~/.ssh/id_rsa.pub      | not sensitive and can (but need     |             |             |
|                        | not) be readable by anyone.         |             |             |
+------------------------+-------------------------------------+-------------+-------------+


所有手册页引号均来自http://linuxcommand.org/lc3_man_pages/ssh1.html

#5 楼

权限与此无关。您的私钥已使用密码进行了加密,因此您需要输入私钥才能对其进行解密和使用。

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

评论


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

–乔迪G
2010-11-26 22:18

不要低估权限。他们肯定仍然发挥作用。

– Alex W
15年5月15日在19:49

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

– cdhowie
15年5月24日在23:43

如果您在私钥上没有密码(自动调用远程脚本的提示音),那么它将无济于事。这里需要许可。

–nerdoc
16年1月7日在23:13

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

–克雷格·希克斯(Craig Hicks)
18-10-8在3:11

#6 楼

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