关于配置ssh免密码登录后,仍提示输入密码

一、在A端创建密钥对:
[root@A ~] ssh-keygen -t rsa -b 4096 -P ''

 

二、如果B机器没有.ssh和authorized_keys文件则创建这个文件夹和文件先,创建后要chown改成当前用户的所属者,其次也要改:
chown buser:buser -R ~/.ssh
chmod 700 ~/.ssh
chmod 600 .ssh/authorized_keys

 

三、将公钥xxxxxx.pub文件拷贝到服务器端的~/.ssh/authorized_keys文件中,有三种方法有三种方法:

 1、通过scp拷贝:
[root@A ~] scp -P 22 ~/.ssh/xxxxxx.pub buser@bserver:~/authorized_keys    #可选参数-P代表指定用端口号22
 2、通过ssh-copyid程序:
[root@A ~] ssh-copy-id -i xxxxxx.pub buser@bserver        #此种方式简单,不需追加改文件名,但不能指定端口号,默认以22端口
 3、通过cat方法:
[root@A ~] cat ~/.ssh/xxxxxx.pub | ssh -p 22 buser@bserver‘cat >> ~/.ssh/authorized_keys’

 

四、免密码登录过程:
1、在A上生成公钥/私钥
2、将公钥拷贝给server B,要重命名成authorized_keys
3、Server A向Server B发送一个连接请求
4、Server B得到Server A的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用Server A的公钥加密,发送给Server A
5、Server A得到Server B发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给Server B。Server B进行和生成的对比,如果一致,则允许免登
总之:A要免密码登录到B,B首先要拥有A的公钥,然后B要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开。

五、常见问题:
1、配置了免密,为什么还提示输入密码?
查看remote端日志
tail -f /var/log/secure
发现:Authentication refused: bad ownership or modes for file /home/dragon/.ssh/authorized_keys
很明显是由于/home/dragon/.ssh/authorized_keys文件的权限设置不正确,将权限设置为600即可:
chmod 600 .ssh/authorized_keys
2、配置了免密,提示输入密码,如果日志没有报错信息,可以通过以下方式调试:
ssh -vvv buser@bserver

如果权限不对或者路劲不对都会导致找不到对应的私钥或公钥,可能 ~/.ssh目录为非700权限,并检查私钥的路劲和文件名是否正确:
vim /etc/ssh/ssh_config

或者:
echo 'IdentityFile /root/.ssh/zabbix-client-rsa' > ~/.ssh/config

 

posted @ 2018-10-31 16:40  bigtree2pingping  阅读(2604)  评论(0编辑  收藏  举报