配置SSH无密码登录需要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啦!~~~~
1 | chmod 700 ~/. ssh / |
2 | chmod 600 ~/. ssh /authorized_keys |
3 | chmod 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
重启机器即可