系统环境: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加密),比对成功,则进行双方的通信

最新文章

  1. 利用StringEscapeUtils对字符串进行各种转义与反转义(Java)
  2. hdu 4329
  3. json学习系列(2)-生成JSONObject的方法
  4. AS与JS相互通信(Flex中调用js函数)
  5. 感知器算法PLA
  6. makefile debug
  7. 暂时告别Solr了
  8. python network programming tutorial
  9. Google 视频编码格式 VP9 究竟厉害在哪里
  10. Python字符串和日期相互转换的方法
  11. MySql数据库通过idb和frm恢复
  12. Python 操作excel之 openpyxl模块
  13. 解决Android SDK下载和更新失败问题
  14. JavaScript在页面中的引用方法
  15. Android组件--意图(Intent)
  16. MapReduce Design Patterns(chapter 2(part 1))(二)
  17. 红黑树(R-B Tree)
  18. android异常Unable to instantiate activity ComponentInfo解决方法
  19. 添加网站标题logo
  20. 错误:为 Web 项目“XXX”配置的 URL“http://localhost/”的网站同时存在于本地 IIS Web 服务器和 IIS Express Web 服务器上。您需要使用 IIS 管理器在 IIS 中更改此网站的绑定。

热门文章

  1. Consul 安装的与启动
  2. FormData兼容IE10 360及DWR的异步上传原理
  3. Solr+HBase
  4. HBase功能组件
  5. 6.Spring【AOP】XML方式
  6. 【NOIP2016提高A组集训第14场11.12】随机游走——期望+树形DP
  7. HZOI20190817模拟24
  8. scp免密码拉去方法
  9. 机器学习实战之Apriori
  10. 群晖的moments套件 发生未知错误