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

xautjzd · 发布于 2013年9月17日 · 最后由 nightire 回复于 2013年9月18日 · 9548 次阅读
4920

我在客户端用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文件,所以直接就重命名了
共收到 20 条回复
1553

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

96

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

4920

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

5259

需要修改一下权限

1638

权限应该是744,644吧

1573

#5楼 @xiaoronglv 700 600 亦可

4920

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

1638

#7楼 @xautjzd

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

4920

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

4920

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

96

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

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

244

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

4920

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

244

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

16楼 已删除
244

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

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

mv .ssh/authorized_keys.old .ssh/authorized_keys
4920

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

244

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

1573

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

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

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

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

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

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