记一次ssh密钥登录失败

环境

我们的私钥是通过SecureCRT工具生成的. 在Debian5/6下面使用正常有问题的主机是Debian7 系统, 客户端是Debian6 系统Debian7 的ssh server版本是1.6 客户端的ssh client是1.5使用的ssh协议均是2

现象

昨天我们一台Debian7主机, 无法通过私钥登录. 每次登录提示需要输入密码. 这是我们第一次使用Debian7的系统, 以往的主机都是Debian5/6的系统

开启ssh的debug参数, 观看登录过程,发现如下

debug2: key_type_from_name: unknown key type '-----BEGIN'debug2: key_type_from_name: unknown key type '-----END'debug3: key_read: missing whitespacedebug3: key_read: missing whitespacedebug3: key_read: missing whitespace......

排查

一开始看到这样的信息, 我以为是私钥格式不正确. 因为网络上一直流传着SecureCRT和Putty之类的工具,产生的密钥和ssh-keygen产生的 格式上有区别不过从我们以往的经验上来看(Debian5/6) , SecureCRT生成的可以正常使用,

虽然有这样的疑问 不过还是重新生成了一份密钥, 继续登录, 还是提示一样的问题, 我最后在Debian7 上 使用ssh-keygen生成一份密钥, 还是提示一样的问题我突然醒悟过来, ssh兼容ssh1的协议. 于是ssh在登录的时候 会协商使用什么样的协议, 上面的提示问题应该是密钥格式不符合ssh1, 所以本次问题应该不是出在私钥格式不对的问题,

于是我去对比 ssh-keygen 产生的密钥 和 SecureCRT产生的有啥不同. 结果我发现 私钥里面写着root我去.. 我的私钥是给cache用户用的, 私钥里面怎么会有root呢?

小心翼翼的瞄了一眼 我的shell 提示符, # 果果的出现了….

好吧, 为了排查方便我切换到了root下, 我却不记得了.

切换到cache用户下 再次执行ssh-keygen

在使用ssh-keygen的时候 有一个提示引起了我的注意

    open /home/cache/.ssh/id_rsa failed: Permission denied

为什么会Permission denied ?

果断查看家目录下的 .ssh 目录权限.

    drw-r--r-- 2 cache cache 4096 Feb 27 11:03 .ssh/

我去, 说好的x权限呢?

给.ssh加上x权限之后, 再次登录. 果断成功了…

结束

事后想想, 应该是用户在登录的时候, ssh要对用户提交的私钥做验证, 但是却无法进入.ssh目录, 就当作用户的公钥不存在, 于是要求用户使用密码方式

记一次ssh密钥登录失败

相关文章:

你感兴趣的文章:

标签云: