您的位置:首页 > 运维架构 > Linux

linux-linux ssh无密码访问设置记录

2017-04-27 12:41 190 查看
内容:linux-linux ssh无密码访问设置,遇到的问题,解决方法

客户端:ubuntu 16.0

服务端: centos 6.1

1. 生成rsa密钥

客户端下输入 ssh-keygen -t rsa 一路回车生成秘钥,~/.ssh/id_rsa.pub(公钥)和~/.ssh/id_rsa(私钥)

2. 将公钥上传至服务端

2.1 方法一:$ssh-copy-id 用户名@ip (将公钥直接添加到服务端的~/.ssh/authorized_keys文件中)

2.2 方法二:通过scp将客户端文件复制到服务端 $scp ~/.ssh/id_rsa.pub 用户名@ip:~/.ssh ,将公钥加入到authorized_keys文件$cat ~/.ssh/id_rsa.pub>~/.ssh/authorized_keys(如果没有这个文件,就创建一个$touch authorized_keys)

网上的基本教程都是这样,经过这两步可以实现客户端和服务端的无密码访问,但是我在完成这两步后还是没能实现无密码访问,查了资料发现有不少人也有这个问题,但原因不尽相同,将其归类:

1. 权限问题,authorized_keys的权限要求是600;chmod 600 authorized_keys

2. ssh配置问题,/etc/ssh/sshd_config(服务端)配置,具体中文手册参考:http://www.cnblogs.com/Rozdy/p/4642928.html

3. SElinux导致,将其关闭   setenforce 0

确认1.3没有问题,应该是ssh配置的问题,具体是什么问题通过ssh调试方法来查看,参考https://segmentfault.com/a/1190000002669374

服务端调试

/usr/sbin/sshd -d -p 2222

在客户端去连接这个新端口

ssh -vvv host -p 2222


此时两边都有日志输出,啥问题都能看到了!!

从服务端的日志中发现,在访问时,服务端使用的公钥为/root/.ssh/authorized_keys,显然不对(登录用户不是root),为此修改sshd_config中的配置:

AuthorizedKeysFile    /.ssh/authorized_keys (默认使用相对路径)修改为 AuthorizedKeysFile    /home/user/.ssh/authorized_keys(绝对路径)

重新启动ssh:$sudo /etc/init.d/sshd_config restart

至此无密码访问成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息