LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 7141|回复: 19

为什么ssh的认证key不起作用?

[复制链接]
发表于 2004-2-25 11:51:19 | 显示全部楼层 |阅读模式
问题具体如下:

host A需要ssh上 host B,于是我在A上执行:

scp ~/.ssh/id_dsa.pub hostB:~/.ssh/authorized_keys2

输入了host B的用户密码后传输成功,分别cat host A的id_dsa.pub和host B的authorized_keys2,内容完全一样,甚至md5的校验码都一样,可当我下次从host A
ssh host B时,它还是提示要我输入用户密码,后来我又试了多种方法,比如把authorized_keys2更名成authorized_keys,或者先把id_dsa.pub scp过去再把内容追加到authorized_keys2里,等等,都没有效果,可是host A ssh 到别的机器用这种方法就很容易实现了,搞得我很郁闷.现在我就差在host B上重建用户了,可这个方法实在不可行,因为用户在host B上还跑着进程

问题出在哪儿呢?各位大侠帮忙诊断一下
发表于 2004-2-25 11:55:25 | 显示全部楼层
make sure host B is also running OpenSSH, if not, you need different approach.
发表于 2004-2-25 12:48:54 | 显示全部楼层
HOST B的sshd_config你看看有没问题
 楼主| 发表于 2004-2-25 15:02:45 | 显示全部楼层
呵,先回复一楼的"终结者"先生

你的意思我不太明白,是提醒我检查host B是否运行sshd服务嘛?可我前面已经提到了,如果没运行ssh服务我怎么能scp呢?还是你想提醒我检查ssh版本的差别?那这个就难到我了,因为...我不知道怎么看ssh的版本(是不是就是sshd_config第一行这句话OpenBSD: sshd_config,v 1.48 2002/02/19 02:50:59 deraadt Exp $?) 另外还有:两台机器的ssh都是装linux自带的,host A linux版本是2.2.16,host B是2.4.18,跟这个有关系么?

再回二楼的斑竹大人:
host B的sshd_config我早也看过,基本上绝大多数语句是注释掉的(就是前面带#号),没有被注释就两句:

SyslogFacility AUTHPRIV

X11Forwarding yes

在我看完帖子后我又把这个文件翻出来仔细看了看,发现了这么一段:
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile      .ssh/authorized_keys

于是我试着把第三句改成这样:
#RSAAuthentication yes
#PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys2
(注意我没有删除第一句的注释#号,因为我认为没有多大区别)
然后我重新启动sshd服务,接着从host A ssh host B,还是...需要密码,无语了...

对了,说说我刚才的另一个发现:在host A上su成root后是可以用密钥认证方式登录host B的,也就是说很可能只是我那个普通用户的问题,唉,奇怪呀奇怪...
发表于 2004-2-25 23:34:19 | 显示全部楼层
AuthorizedKeysFile .ssh/authorized_keys2

应该是~/.ssh/au
这个是你的key的位置,找不到key当然要你用密码了

如果还不行的话就
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys2
估计你的HOST B是RH73,我不清楚RH的默认配置是不是把KEY认证打开的,你可以试试的

还有不要叫偶斑竹大人啊~~~大家都是朋友~~这样不爽~~~呵呵
发表于 2004-2-26 17:38:01 | 显示全部楼层
to check the sshd version, telnet server 22, the server will tells you about it. it seems you should use the openssh since it's default for openbsd.

it seems your server config is  wrong. you need to enable public key authentication: remove the # from the line `#PubkeyAuthentication yes' and restart sshd
 楼主| 发表于 2004-3-2 16:36:17 | 显示全部楼层

呵,不好意思

因为这些日子一直出差在外,没有及时向大家反馈后来的情况,sorry~

但是……情况或许会让各位关注的兄弟失望

楼上两位的方法我都已经试过了,现在我的host B sshd_config相关内容如下:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys2

可是在host A上用普通用户登录过去时依旧需要密码,而且现在我认为我的host B sshd配置应该没有问题,因为我在上面的帖子里讲过:host A上的root用户是完全可以以密钥方式登录host B的,所以现在我认定问题出在host B的普通用户上,但具体是什么地方的配置出了差错就实在不得而知了,或许……就是象包子兄弟所说的:找不到key的位置吧,唉,算了,反正这个问题也不是什么很伤大雅的事情,就且让它这么放着吧

再次谢谢楼上两位兄弟给我提供的建议
发表于 2004-3-12 10:58:33 | 显示全部楼层
呵呵,我也遇到过同样的问题,但是用了一个奇怪的方法解决了,就是建用户的时候,一定要把这个用户指定到一个组里面去,然后ssh-keygen,你会发现密匙文件的大小有一点点不一样,你也试试吧
发表于 2004-3-13 01:08:15 | 显示全部楼层
我觉得多数是位置问题
你什么时候有兴趣搞了,搞搞他,把结果告诉大家吧
发表于 2004-3-13 13:58:08 | 显示全部楼层

我找到ssh key 不起作用的原因啦

关键是~/.ssh目录的权限有问题
我用的是fedora 1,/etc/bashrc中设置的用户的umask 为002,root的umask 为022,所以,
root自己建立的.ssh目录是755,而普通用户建立的是775,但是ssh 服务要求~/.ssh目录必须只有
用户自己可以写,若组或其他有写权限,则会要求输入密码。
所以,出现了root用户的key起作用,普通用户的key 不起作用。

解决:将~/.ssh目录改为755权限或更严格,ssh的key就起作用了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表