我更改了文件夹中的权限.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 代理,否则你每次都必须输入密码。
答案2
我为此苦苦挣扎了很久,最后终于弄清楚了需要什么。将$USER
所有东西替换为您要在服务器上登录的 SSH 用户名。如果您尝试以 SSH 用户名 身份登录,则root
需要使用/root/.ssh
etc.,而不是/home/root/.ssh
which.,这是非 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 [email protected]
答案3
我将这个作为单独的答案发布,因为我想看到手册页建议转化为权限。
根据手册页引文(末尾有链接)总结:
目录或文件 | 手册页 | 建议的 权限 |
强制 权限 |
---|---|---|---|
~/.ssh/ |
没有一般要求将此目录的全部内容保密,但建议的权限是用户具有读/写/执行权限,并且其他人无法访问。 | 700 | |
~/.ssh/authorized_keys |
该文件并不高度敏感,但建议的权限是用户读/写,其他人无法访问 | 600 | |
~/.ssh/config |
由于可能被滥用,该文件必须具有严格的权限:仅限用户读/写,其他人不可写。 | 600 | |
~/.ssh/identity ~/.ssh/id_dsa ~/.ssh/id_rsa |
这些文件包含敏感数据,应仅供用户读取,但其他人不能访问(读/写/执行) | 600 | |
~/.ssh/identity.pub ~/.ssh/id_dsa.pub ~/.ssh/id_rsa.pub |
包含用于身份验证的公钥。这些文件不敏感,任何人都可以(但不必)读取。 | 644 |
答案4
权限与此无关。您的私钥已使用密码加密,因此您需要输入密码才能解密并使用私钥。
您可以考虑运行一个 ssh 代理,它可以缓存解密的密钥并将它们提供给需要它们的应用程序。