环境
我们的私钥是通过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目录, 就当作用户的公钥不存在, 于是要求用户使用密码方式
相关文章:
你感兴趣的文章:
- 变压器型号含义
- 轻松玩转热力舞台TV正式版的技巧都在这里
- 苹果iPhone14系列中Find My功能通过卫星分享位置方法教程
- Ios为我所用
- CPU双核处理器是什么意思?有什么好处?
- 用户管理中的文件上传功能