CenOS SSH无密码登录

系统环境:CentOS6.8

软件环境:SSH(yum -y install openssh-clients)

IP   地址:192.168.0.188

用户环境:root、xiaoming

      系统内置root,创建xiaoming角色的步骤如下

    1. adduser xiaoming -s /bin/bash    (创建用户名称,并且使用的shell为/bin/bash)
    2. passwd xiaoming,会提示输入密码,连续输入两次相同的密码  (如果创建的用户没有设置密码,则会失败。测试的方法:Log Out->xiaoming,使用密码是否可以登录)    

操作目的:普通的ssh进行Linux连接,会提示输入密码。通过一系列的配置可以省略密码的输入,直接登录。使用root账户无密码登录xiaoming

操作步骤:

  1. 切换到root
  2. cd ~  切换到当前角色的home空间
  3. ssh-keygen -t rsa 连续三次回车。(第一次回车:确定生成的私(公)钥的存放路径和文件名称。后两次回车用于在生成的私钥中加入自定义的混杂的数据信息。增加加密强度)。都默认即可。
  4. ls -al ~/.ssh/  id_rsa id_rsa.pub  如果存在着两个文件,则表示密钥生成成功
  5. ssh-copy-id -i ~/.ssh/id_rsa.pub xiaoming@ 192.168.0.188  回车进行确认。并输入远程主机对于角色的登录密码进行验证。
  6. ssh xiaoming@192.168.0.188 则可以进行无密码远程登录

知识拓展:

  SSH安全验证,是一种"非对称性密钥系统",即公钥私钥加密系统。公钥(public key)用于加密数据,任何人都可以拥有。私钥(private key)用于解密,只能拥有着自己拥有。公钥加密后的数据,只能用私钥才能解密。其安全验证分为两种方式

  1. 口令安全验证

    验证流程

    • 客户端向远程主机发出请求
    • 远程主机接受请求,并返回远程知己的公钥
    • 客户端确定接受远程主机返回的信息,并通过远程主机的公钥加密登录密码,同时并携带客户端自己的公钥再次发送请求
    • 远程主机接受客户端的请求,并通过私钥解密客户端通过公钥加密的登录密码,如果匹配成功。则建立的可信任的连接。并且把客户端的公钥存放到~/ssh/know_hosts中。至此,双方基于公(私)钥的加密解密进行安全通信

     上述流程中,连接的远程主机可以会被其他远程主机劫持,即实际请求的远程主机并不是真正要请求的远程主机。伪装的远程主机可以发送自己的公钥给客户端,以此欺骗客户端获取客户端的公钥信息。进行任意操作。所以在客户端在第一次接受远程主机返回的信息时。会进行一次主机"指纹密钥"验证,以确定连接的远程主机的正确性。如果确定,则会记录到客户端当前用户的~/.ssh/know_hosts文件中。接下来进行连接远程主机的密码登录验证。当客户端再次发送同一个远程主机的请求,求会把远程主机的"指纹密钥"和know_hosts中记录的进行比对。不存在,则需要用户进行远程主机身份的确认。存在,则直接让客户端输入登录远程主机的密钥进行下一步的操作

  2. 密钥安全验证

    验证过程

      在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上(参考上面的案例操作)。并存储在服务器当前用户的~/.ssh/authorized_keys文件中

      认证过程分为两个步骤。

       1. 会话密 钥(session key)生成
          1. 客户端请求连接服务器,服务器将自己的公钥(Public Key)发送给客户端。
          2. 服务器生成会话SSID(session id)发送给客户端。
          3. 客户端生成会话密钥CSID(session key),并计算 r = SSID xor CSID。
          4. 客户端将r用服务端公钥(Public Key)进行加密,结果发送给服务器。
          5. 服务器用密钥(Private Key)进行解密,获得r。
          6. 服务器进行 r xor SSID 的运算,获得 CSID。
          7. 至此服务器和客户端都知道了会话密钥SCID,以后的传输都将被SSID加密。
       

       2. 认证
          1. 服务器生成随机数,并用客户端的公钥(Public Key)加密,发送给客户端
          2. 客户端使用密钥(Private Key)解密服务端加密的数据得到服务端的随机数
          3. 客户端把随机数和生成的会话密钥进行MD5进行加密和服务端进行对比(服务端同时也把自己生成的会话ID和随机数通过MD5加密),比对成功,则进行双方的通信

posted @ 2016-09-28 10:43  吃肉的小羊  阅读(184)  评论(0编辑  收藏  举报