配置SSH无密码登录需要2步:

  1. 生成公钥和私钥

  2. 导入公钥到认证文件,更改权限


以CentOS为例。

有机器A(192.168.2.180),B(192.168.2.181)。现想A通过ssh免密码登录到B。

1.在A机下生成公钥/私钥对。

[Master@A ~]$ ssh-keygen -t rsa -P ''


注:-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
它A的工作目录下生成.ssh目录,.ssh下有id_rsa(密钥)和id_rsa.pub(公钥)。

2.把A机下的id_rsa.pub复制到B机下,在B机的工作目录下的.ssh/authorized_keys文件里,我用scp复制。

[Master@A ~]$ scp .ssh/id_rsa.pub Slaver@192.168.1.181:/home/Slaver/id_rsa.pub 
Slaver@192.168.1.181's password:
id_rsa.pub                                    100%  223     0.2KB/s   00:00

这一步要输入密码。

3.B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里。

[Slaver@B ~]$ cat id_rsa.pub >> .ssh/authorized_keys
[Slaver@B ~]$ chmod 600 .ssh/authorized_keys


authorized_keys的权限要是600

一般以的操作就ok了,如果仍要输入密码。

一、可能是权限的问题。

注意权限,.ssh权限700,authorized_keys权限600,就KO啦!~~~~   

1chmod 700 ~/.ssh/
2chmod 600 ~/.ssh/authorized_keys
3chmod 700 /home/userName

二、SELinux是否关闭。

1、查看SELinux状态命令:

      /usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态
     SELinux status:                 enabled

    getenforce                 ##也可以用这个命令检查

2、关闭SELinux方法:

     临时关闭(不用重启机器):

 代码如下:

  setenforce 0 #设置SELinux 成为permissive模式
  #setenforce 1 设置SELinux 成为enforcing模式

3、修改配置文件需要重启机器:

    修改/etc/selinux/config 文件

   将SELINUX=enforcing改为SELINUX=disabled

   重启机器即可