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

.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

答案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/.sshetc.,而不是/home/root/.sshwhich.,这是非 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 [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

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

答案4

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

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

相关内容