我在客户端用 ssh-keygen 生成密钥和公钥后,将生成的 id_rsa.pub 公钥内容追加到服务器的~/.ssh/authorized_keys 文件里,并且重启了服务器的 sshd 服务。但是客户端采用 ssh 连接服务器时还需要输入密码,请问可能是什么原因呢?
具体操作如下:
#客户端
$ssh-keygen
一路回车直到生成id_rsa和id_rsa.pub文件,然后拷贝id_rsa.pub文件到服务器
$scp id_rsa.pub git@my_server_ip:~/.ssh/(git为我服务器的用户名)
#服务端
$mv id_rsa.pub authorized_keys #处在/home/git/.ssh/目录,底下也没有authorized_keys文件,所以直接就重命名了
@xiaoronglv @nightire 请问为何要更改权限呢?网上搜了半天答案都没搜着。默认.ssh 权限是 775,authorized_keys 权限为 644,只需将.ssh 的权限更改成 700 或者 744 即可。authorized_keys 其实根本不需要改,保持默认就行。
#10 楼 @zhangyuan 刚才我实验了下,其实只要 grup 和 others 没有写权限即可,当然 user 肯定需要 rwx。所以说 700、744 或者 755 都可以。只是不明白 others 没有写权限这我能理解,我不能理解的是为何 groups 不能对.ssh 有 w 权限。
简单一点,反过来想:.ssh
目录保存在你的用户目录之下,那么请问有什么理由一定要给它 group
的写权限呢?有什么特别的应用场景吗?
group
可以 赋给属于同组的用户相同的权限,请注意是 可以,也就是说你需要的时候可以给 group
放开写权限,但就这个例子而言,难道你希望其他人在你不知情的时候给你动点手脚吗?还是你觉得你自己无力管理 ssh,需要同组人来帮你忙?
.ssh 的写权限最多就是同一个组的用户将 authorized_keys 改名了导致 user 无法完成身份认证,但是不会有冒充的行为产生。
就“导致 user 无法完成身份认证”这一条便足以有理由去除写权限了,难道你还觉得这是应该的?