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

CenOS SSH无密码登录的更多相关文章

  1. 普通用户ssh无密码登录设置

    这段时间在做Hadoop的环境配置,用root用户只需要按照一定的步骤进行操作就可以直接实现无密码登录,但如果使用新建用户,怎么尝试都不行. 本帖大部分都是其他人帖子的内容.如果按照下面的步骤还是不能 ...

  2. CentOS下SSH无密码登录的配置

    1.确认本机sshd的配置文件(需要root权限) $ gedit /etc/ssh/sshd_config 找到以下内容,并去掉注释符"#" RSAAuthentication ...

  3. ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访问(转)

    转自:http://blog.csdn.net/pennyliang/article/details/8556662 ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访 ...

  4. ssh 无密码登录

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(192.168.1.155),B(192.168.1.181).现想 ...

  5. CentOS配置ssh无密码登录

      CentOS配置ssh无密码登录的注意点   前提配置:使用root登录修改配置文件:/etc/ssh/sshd_config,将其中三行的注释去掉,如下: 然后重启ssh服务:service s ...

  6. 【转发】SSH无密码登录的配置

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:http://cn.soulmachine.me/     原文地址:http ...

  7. CentOS 下SSH无密码登录的配置

    CentOS 下SSH无密码登录的配置 最近学习Hadoop.它要求各节点之间通过SSH无密码登录,配置SSH的时候费了一番功夫,记录下来,以备忘. 配置SSH无密码登录需要3步: 1.生成公钥和私钥 ...

  8. Linux实现SSH无密码登录(对目录权限的设置非常详细,可以参考一下)

    假设服务器IP地址为192.168.1.1,机器名:cluster.hpc.org 客户端IP地址为172.16.16.1,机器名:p470-2.wangrx.sioc.ac.cn 客户端用户yzha ...

  9. 使用ssh无密码登录

    使用ssh无密码登录 ssh 是一个专为远程登录会话和其他网络服务提供安全性的协议.默认状态下ssh链接是需要密码认证的,可以通过添加系统认证(即公钥-私钥)的修改,修改后系统间切换可以避免密码输入和 ...

随机推荐

  1. scrapy中的ImagePipeline下载图片到本地、并提取本地的保存地址

    通过scrapy内置到ImagePipeline下载图片到本地 在settings中打开 ITEM_PIPELINES的注释,并在这里面加入 'scrapy.pipelines.images.Imag ...

  2. 在scrapy中将数据保存到mongodb中

    利用item pipeline可以实现将数据存入数据库的操作,可以创建一个关于数据库的item pipeline 需要在类属性中定义两个常量 DB_URL:数据库的URL地址 DB_NAME:数据库的 ...

  3. 重装一次CM的坑爹记录

    今天同事要对测试环境进行降级(测试高于生产所以要求降级),自己不经常搞运维,但是无奈测试环境没运维管理只能自己上了. 流程和遇到问题按数字表示. 1.重装CM(clouder manager)这个过程 ...

  4. Luogu P4932 浏览器(二进制)

    P4932 浏览器 题意 题目背景 __stdcall在用\(Edge\)玩\(slay\)的时候,鼠标会经常失灵,这让她十分痛苦,因此她决定也要让你们感受一下\(Edge\)制造的痛苦. 题目描述 ...

  5. sqlserver 创建用户 sp_addlogin

    创建新的 Microsoft® SQL Server™ 登录,使用户得以连接使用 SQL Server 身份验证的 SQL Server 实例.  语法: sp_addlogin [ @loginam ...

  6. 仓库盘点功能-ThinkPHP_学习随笔

    public function check() { $db = M('Bookinfo'); $region = I('post.region'); $c = $db -> count(); f ...

  7. JEECMS自定义标签开发步骤2

    JEECMS自带的只有[@cms_advertising]标签,并且官方没有给文档,用法: [@cms_advertising id='3']             <img src=&quo ...

  8. Ceisum官方教程2 -- 项目实例(workshop)

    原文地址:https://cesiumjs.org/tutorials/Cesium-Workshop/ 概述 我们很高兴欢迎你加入Cesium社区!为了让你能基于Cesium开发自己的3d 地图项目 ...

  9. 从登录接口的响应结果里提取token

    token一般存在于2个地方:1. cookie, 2 ,某个接口的响应结果中 1. 我们接口的token存在于登录接口的响应结果中,如下图: token值 为红色标记的值,在登录接口里加以下2行代码 ...

  10. Jmeter分布式测试笔记

    在性能测试过程中,如果要求并发数较大时(例如1000+),单机配置cpu与内存等无法支持,则需要使用Jmeter的分布式测试方法. 一.一般什么情况下需要分布式 1.前辈经验:比如机器i5双核的cpu ...