基本原理
- 通过加密解密的认证过程,获取远程机的信任,远程机相信你是安全的之后,就会让你不输入密码就登陆了.
认证过程
- 本机生成公钥和私钥,将公钥交给远程机.
- 本机开始登陆远程机,远程机检测到登陆请求.
- 远程机随机生成一个字符串,并利用本机的公钥加密,将加密的结果返回给本机.
- 本机获取加密结果,利用私钥解密,并将解密结果发送给远程机.
- 远程机对比本机解密结果,如果发现答对了.则允许登陆,否则拒绝.
公钥与私钥
- 公钥: 公开发放,谁都可以获取.
- 私钥: 仅有一份,私有存储.
- 公钥加密只有私钥可以解密,私钥加密只有公钥可以解密.
- 上例中,如果是有害机器是解密不了远程机的加密密文的.因此远程机就可以判断当前请求登陆的机器是否是安全的.
Linux系统操作实例操作
- 假如有两台机器主机名是NameNode与DataNode.现在NameNode想登陆DataNode.
两台机器上都有用户hadoop,用户目录(/home/hadoop)
NameNode主机上执行命令: ssh-keygen -t rsa
执行上述命令后,NameNode主机/home/hadoop/.ssh下至少有两个文件.
- id_rsa 私钥,不能外泄
- id_rsa.pub 公钥,随意放.等下把这个交给远程机器
登陆DataNode主机,将公钥追加到/home/hadoop/.ssh/authorized_keys 中.
- .ssh文件夹权限必须700, authorized_keys 文件权限必须600
- 更改文件权限 : chmod 600 authorized_keys
- 追加公钥到文件中 : cat id_rsa.pub >> authorized_keys
远程操作完毕.在NameNode主机上可以试试可不可以无密登陆了.