Linux免密登录使用的RSA算法。
RSA本身是一种非对称加密算法,会生成公钥和私钥。
公钥
使用公钥对内容进行加密
天王盖地虎
私钥
持有私钥的PC才能正常访问公钥加密的内容
曹洋一米五
只要持有私钥就能访问公钥加密的内容,这种事情本身就是存在风险的。一旦私钥丢失,那么服务器上的数据就存在被窃取的风险。
但是Linux生成公钥和私钥的时候支持对私钥证书文件添加密码。
证书使用场景:
场景一:只是单纯的使用证书来登录服务器。
使用证书的登录方式可以避免密码遗忘、泄漏的问题。
使用证书登录服务器的方式也是服务器加固(服务器安全相关问题)的方式。
服务器可以设置不允许使用密码进行远程登录。只允许证书的方式登录。
证书本身支持加密,就算证书丢失,再不知道证书密码的情况,证书属于无效文件。
场景二:集群中使用证书进行免密登录。
因为但凡设计到集群的时候,一般都不会是小数目的服务器数量。众多的服务器之间进行互相访问,频繁的输入密码的事情将会成为开发工程师噩梦。
所以,使用证书管理集群的时候,可以免除集群中的服务器互相访问时工程师手工输入密码的问题。
证书的生成:
bash
ssh-keygen
第一次提示:你的证书文件存放位置
第二次提示:对私钥加密,输入密码。如果不需要输入密码,直接回车。
第三次提示:私钥证书的密码确认操作。
证书文件会存放在当前账户的家目录下的隐藏目录".ssh"目录下,在该目录下会有以下4个文件:
id_rsa
私钥
执行证书生成命令才会有
id_rsa.pub
公钥
执行证书生成命令才会有
known_hosts
曾经访问过的服务器信息
每次ssh、scp、ssh-copy-id到远程服务器时就会保存记录到此文件中,以后再此访问该服务器时就不会再提示那一句"你确定要继续访问吗 yes/NO?"
authorized_keys
记录来访服务器的公钥文件内容
该文件会记录访问本机的远程服务器的公钥证书文件内容,只有对应的私钥才能进行验证。
证书注册:(公钥的拷贝)
将本机的公钥证书文件注册到远程服务器上,此后就可以使用私钥证书进行登录。
bash
ssh-copy-id {UserName}@Host_IP
执行此命令,会要求输入远程服务器的对应账户的密码。
这一步就是向远程服务器注册本机的id_rsa.pub文件(公钥)内容。此后只有本机上与公钥文件共同生成的私钥才能够进行免密登录。
免密码登录原理图