.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
#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
拥有文件/文件夹而不是root
:chown 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
评论
关于您的第一段,我可以与本地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
是下一个尝试尝试的逻辑方法。
评论
/ bin / bash查找.ssh / -type f -exec chmod 600 {} \ ;;找到.ssh / -type d -exec chmod 700 {} \ ;;查找.ssh / -type f -name“ * .pub” -exec chmod 644 {} \;