开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

一个SSH 公钥登录失败的问题及解决经验

简介:
+关注继续查看

一直使用阿里云的Centos做服务器,最近在服务器上新建了一个用户,为了免去每次SSH都要输入密码的麻烦,我通过 下面的命令为该用户建立SSH公钥/私钥 登录认证, 本来是个很简单的操作,没想到竟然出现了问题!

1    //客户端的linux机上    
2    
3    ssh-keygen    
4    
5    scp ~/.ssh/id_rsa.pub    aaa@ServerIP:~    
6    
7    //服务器上    
8    
9    用aaa用户登录    
10    
11    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

配置完毕后,在客户机上通过ssh登录,竟然还提示要输入密码!? 因为其实以前已经配置过好几次SSH公钥登录,从来没有出现过问题。这一次很意外。反复检查了几遍也没有找到原因。

通过下面的debug方式得到信息如下:

1    ssh -v aaa@serverIP


wKioL1nLf7-S8ukRAAtvll2xhvk060.png




通过上述的SSH -v 命令可以看到,客户机已经把私钥发送到服务器端,但在服务器端没有验证成功,所以问题应该位于服务器端。

通过反复的Google,找到一些线索, 有的说是SELinux的原因, 但阿里云的CentOS服务器上并没有启用SELinux. 有的说是.ssh 目录以及authorized_key的权限问题,我把相关的文件和目录权限放的更加宽松,但还是失败!

没有办法,看log吧。CentOS 6的SSH登录信息记录在/var/log/secure文件中,找到下面的重要信息:


wKiom1nLgADwsQnNAAWH7uN1IcA704.png



服务器端的错误: “bad ownership or modes for directory…”

有了具体的错误信息,再次求助于Google, 原来我把 .ssh目录的权限设置成了775 (当时认为权限越宽松越不会有问题,哎),而系统安全方面,对于这个存放公钥的目录的权限要求是只有本人才可以读写的,应该是700!否则,缺省的情况下会拒绝进行authentication. 改成700后,再次SSH登录,问题解决!

通过这个小事情(折腾了我好几个小时其实), 学到了:

1. 仔细看log是发现问题原因的很重要的手段

2. 有的时候,权限不是越宽松就一定不影响具体操作, SSH公钥认证必须设置合适的权限 : .ssh目录的权限为 700, authorized_keys的权限为600



本文转自 f_066 51CTO博客,原文链接:http://blog.51cto.com/ganmu/1969246,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ssh 公钥私钥认证原理
通常,通过ssh登录远程服务器时,使用密码认证,分别输入用户名和密码,两者满足一定规则就可以登录。
703 0
SSH无密码验证
一、安装和启动SSH协议  假设没有安装ssh和rsync,可以通过下面命令进行安装。 sudo apt-get install ssh 安装SSH协议 sudo apt-get install rsync service sshd restart 启动服务 (rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件) 确保所有的服务器都安装,上面命令执行完毕,各台机器之间可以通过密码验证相互登。
1162 0
设置不输入密码ssh登录
在/etc/hosts文件下加入:   192.168.1.60 u60 #设置u60为主机名 在每个节点上创建RSA秘钥: # ssh-keygen -t rsa # 一直按确定键即可 # touch /root/.
809 0
ssh非交互式密码输入
ssh登陆不能在命令行中指定密码。sshpass的出现,解决了这一问题。sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码。 它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。
1123 0
两个SSH2间免密码登录
OpenSSH登录SSH2.pdfSSH2免密码登录OpenSSH.pdfSSH2间免密码登录.pdf 以下针对的是ssh2,而不是ssh,也不是OpenSSH。配置分两部分:一是对登录机的配置,二是对被登录机的配置,其中登录机为客户端,被登录机为服务端,也就是解决客户端到服务端的无密码登录问题。
721 0
SSH2免密码登录精简详细说明
以下针对的是ssh2,而不是ssh。精简的意思是无多余步骤,详细是说关键细节都有提到。配置分两部分:一是对登录机的配置,二是对被登录机的配置,其中登录机为客户端,被登录机为服务端,也就是解决客户端到服务端的无密码登录问题。
757 0
SSH无密码验证登录的实现(转摘)
今天开始在集群中配置HADOOP, 三个节点,一个是NAME-NODE, 两个是DATA-NODE。 配置SSH无密码验证登陆时,不太成功。找了网上CASE。 原来是自建.ssh目录时,没有将权限设置为700,而AUTHORIZED_KEYS的权限要设置为600. 按以下文章配置后,一切OK。
985 0
获取cuteftp中的ssh密码
昨天拿到一个管理员的机器,分析他上面的文件时在Application Data目录找到了cuteftp的dat文件,迅速下过来导入到cuteftp里拿密码,上面全是内网ip的ftp连接,内网是一个大的网域,可以通过密码拿到更多的机器。
846 0
13688
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载