ssh免密码登陆的原理:html
serverA 免密码登陆到 serverBssh
机器A 向 机器B 进行免密码登录post
step1:
在机器A中生成 私钥和公钥:.net
ssh-keygen -t rsacode
此时在 ~/.ssh/ 目录下生成了公钥(id_rsa.pub)和私钥(id_rsa)server
step2:
把机器A的公钥(id_rsa.pub)复制到机器B ~/.ssh/authorized_keys 文件里,两种经常使用方法htm
方法1:blog
scp ~/.ssh/id_rsa.pub username@host:/home/B/id_rsa.pubit
//此时scp须要输入 登陆机器B username用户的密码io
//而后进入机器B内把 /home/B/id_rsa.pub 文件内容加写进 ~/.ssh/authorized_keys 文件:
cat /home/B/id_rsa.pub /home/B/.ssh/authorized_keys
方法2:
//在机器A中使用 ssh-copy-id 把公钥加写到机器B的 ~/.ssh/authorized_keys 文件
ssh-copy-id username@host
//执行后输入机器B username用户的密码,效果和方法1同样
step3:
修改机器B ~/.ssh/authorized_keys 文件的权限:
chmod 600 ~/.ssh/authorized_keys
此时若是机器B没有~/.ssh 目录须要手动建立
step4:
此时机器A能够进行免验证登陆 机器B
ssh username@host
参阅网上不少方法后,发现步骤都差很少,可是却屡屡失败,设置完后仍然要输入密码,后面发现了是被登陆机器的文件权限问题:
//用户权限
chmod 700 /home/username
//.ssh文件夹权限
chmod
700 ~/.
ssh
/
//
~/.
ssh
/authorized_keys
文件权限
chmod
600 ~/.
ssh
/authorized_keys
还有可能这个文件内容被注释了(改为下图的状态):
vi /etc/ssh/sshd_config
引用与参考:
http://www.cnblogs.com/kex1n/p/6017963.html
http://chenlb.iteye.com/blog/211809
https://jingyan.baidu.com/article/2fb0ba4043124a00f2ec5f0f.html
http://blog.csdn.net/xyl295528322/article/details/37762557