开发工具 SSH 上传公钥到服务器后还需要密码

xautjzd · 2013年09月17日 · 最后由 lemon_shenzhen 回复于 2018年01月10日 · 26143 次阅读

我在客户端用 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文件,所以直接就重命名了

权限不对? ssh 连接的时候加个 -v 看看输出

ssh -vvT git@yourhost 看看输出,一般都会告诉你问题在哪

#1 楼 @Peter @loveky 谢谢,貌似是.ssh 目录和 authorized 的权限不对,ssh -vvT git@serverip 时出现了:ignored authorized_keys bad ownership or modes for directory。然后 google 搜答案。将.ssh 的权限改为 700,authorized_keys 权限改为 600 即可。

需要修改一下权限

权限应该是 744,644 吧

@xiaoronglv @nightire 请问为何要更改权限呢?网上搜了半天答案都没搜着。默认.ssh 权限是 775,authorized_keys 权限为 644,只需将.ssh 的权限更改成 700 或者 744 即可。authorized_keys 其实根本不需要改,保持默认就行。

#7 楼 @xautjzd

你要简单的了解一下 linux 的权限管理方法,否则永远不明白。

#8 楼 @xiaoronglv 权限我了解,但是我不明白为何要改为 700 或者 744 才行。

#10 楼 @zhangyuan 刚才我实验了下,其实只要 grup 和 others 没有写权限即可,当然 user 肯定需要 rwx。所以说 700、744 或者 755 都可以。只是不明白 others 没有写权限这我能理解,我不能理解的是为何 groups 不能对.ssh 有 w 权限。

匿名 #12 2013年09月17日

ssh-copy-id 自动修正权限问题

ssh-copy-id -i /path/to/id_rsa git@my_server_ip

#11 楼 @xautjzd .ssh 的写权限会支持文件 rename 吧,那样麻烦就大了

#13 楼 @fsword 既然在同一个 group,应该是相互信任的吧,不然应该不会在同一个 group 吧

#14 楼 @xautjzd 不会吧兄弟,这个道理你还想不明白么?公钥认证的是身份,就算你和我关系好,可以随便来我家串门,但是不能以我的名义给我老婆发短信吧

16 楼 已删除

#16 楼 @xautjzd 我回答的是你上面的那句话——既然在同一个group,应该是相互信任的吧,因为有信任也不能干扰身份认证

至于更改authorized_keys文件名,但是又不能更改其内容这句话,是有风险的:

mv .ssh/authorized_keys.old .ssh/authorized_keys

#17 楼 @fsword mv .ssh/authorized_keys.old .ssh/authorized_keys不太理解。.ssh 的写权限最多就是同一个组的用户将 authorized_keys 改名了导致 user 无法完成身份认证,但是不会有冒充的行为产生。

#18 楼 @xautjzd 我已经说的够多了,下面我建议你自己多想想,实在不行再问

#18 楼 @xautjzd 纠结这个做什么呢?

简单一点,反过来想:.ssh 目录保存在你的用户目录之下,那么请问有什么理由一定要给它 group 的写权限呢?有什么特别的应用场景吗?

group 可以 赋给属于同组的用户相同的权限,请注意是 可以,也就是说你需要的时候可以给 group 放开写权限,但就这个例子而言,难道你希望其他人在你不知情的时候给你动点手脚吗?还是你觉得你自己无力管理 ssh,需要同组人来帮你忙?

.ssh 的写权限最多就是同一个组的用户将 authorized_keys 改名了导致 user 无法完成身份认证,但是不会有冒充的行为产生。

就“导致 user 无法完成身份认证”这一条便足以有理由去除写权限了,难道你还觉得这是应该的?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号