SSH公钥方式认证及配置
简单记住一句话:
客户机生成公钥,追加到服务机
配置很简单:
假设客户机为A,服务机为B,现在A想要免密码登录到服务机B
1.在A上面生成公钥
ssh-keygen -t rsa
2.将A的公钥追加到B的authorized_keys文件
3.检查权限
配置完成后,是不需要重启sshd服务的,直接可用
但是可能遇到一个问题,就是配置好了,仍然提示要输入密码
这里我理解反了,没有弄清楚其原理
假设有A、B两台服务器,我通过用户Ua登录到A上面,想通过服务器B上的用户Ub来进行免密码登录到B,那么应该这样操作:
1.在服务器A上面的用户Ua的/home/Ua/.ssh目录下,生成公钥私钥
2.将A的公钥,追加到B服务器的/home/Ub/.ssh/authorized_keys文件末尾
3.检查.ssh(700)与authorized_keys(600)的文件权限
4.从A登录到B:
ssh Ub@B
为什么不是服务器B生成公钥,追加到服务器A的authorized_keys中呢?
我觉得这是由于一个“授权许可”的设计在里面
如果服务机生成公钥,那么一旦服务机的公钥泄露,任何拥有公钥的机器都可以登录服务机为所欲为了
而现在的场景是客户机想登录服务机,那么必须有一个申请的机制。客户端将公钥提交给服务机,服务机加入authorized_keys,其实就是允许申请的操作。