2010-11-26 22:04:58 +0000 2010-11-26 22:04:58 +0000
411
411

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

答案 (4)

93
93
93
2015-06-09 20:39:45 +0000

我纠结了很久,终于想通了需要什么。将$USER处处替换成你要登录服务器上的SSH用户名。如果你想用root登录,你需要用/root/.ssh等。而不是/home/root/.ssh,这对于非root用户是这样的。

  • 服务器上的主目录不应该被其他人写入: chmod go-w /home/$USER
  • 服务器上的SSH文件夹需要700个权限: chmod 700 /home/$USER/.ssh
  • 授权的/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
37
37
37
2013-01-03 03:50:21 +0000

同时确保你的主目录不能被其他用户写入。

chmod g-w,o-w ~

6
6
6
2010-11-26 22:07:13 +0000

权限应该和这个没有关系。你的私钥是和密码一起加密的,所以你需要输入它才能解密和使用私钥。

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

4
4
4
2014-04-17 20:20:44 +0000

Felipe是正确的—-包含.ssh目录的目录必须是不能被组或其他文件写入的。因此,如果在运行chmod go-w ~之后,如果你在ssh'ing时仍然被提示密码,假设你没有在ssh-keygen命令中指定一个密码,并且你的.ssh目录在你的主目录中,那么ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys就是下一个合理的选择。