1)创建其他用户

useradd [-d 登录目录] [-G ssh][用户名] 
一定要将用户添加到ssh组不然无法没有权限登录ssh

2)设置ssh不允许root登录

vi /etc/ssh/sshd_config
找到 PermitRootLogin yes
修改为PermitRootLogin no
并在尾部添加 AllowUsers  [用户名列表]
然后重启ssh服务,/etc/init.d/ssh restart

3)如何使用公钥认证

先解释下什么是公钥密钥:

公钥私钥是不对称加密方式,公私钥的本质都是密钥,公钥是可以公开的代表用户信息的一个数字证书,私钥是用户公钥对应的一个的密钥。公钥可以公开,密钥一定要自己保存好不要泄露。两个密钥是互解的关系,即用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。
公钥可以让任何人知道,因为它是代表用户信息的一个签章。
比如A公开了它的公钥,其向B发送了一个信息,这个信息用A的私钥加密的,B用A的公钥解密出这个信息,就说明信息是来自A的。
又比如A想发送一个只有B能解密出的信息,则A用B的公钥加密信息,然后发送给B,则只有B能解密出信息,因为只有B有它的公钥对应的密钥。
 

ssh 的公钥认证就是使用了公私钥互解的特性。服务器和客户端都各自拥有自己的公钥和密钥。为了说明方便,以下将使用这些符号。

Ac 客户端公钥 Bc 客户端密钥 As 服务器公钥 Bs 服务器密钥

在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。

认证过程分为两个步骤。

  1. 会话密钥(session key)生成
    1. 客户端请求连接服务器,服务器将 As 发送给客户端。
    2. 服务器生成会话ID(session id),设为 p,发送给客户端。
    3. 客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
    4. 客户端将 r 用 As 进行加密,结果发送给服务器。
    5. 服务器用 Bs 进行解密,获得 r。
    6. 服务器进行 r xor p 的运算,获得 q。
    7. 至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
  2. 认证
    1. 服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
    2. 客户端使用 Bc 解密 S(x) 得到 x
    3. 客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
    4. 服务器计算 q + x 的 md5 值 m(q+x)
    5. 客户端将 n(q+x) 发送给服务器
    6. 服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功

根据wiki的解释:

实际上,在客户端请求连接服务端的时候,客户端将Ac告诉了服务端,并且服务端会在请求登录用户目录下的./ssh/authorized_keys  查找是否有这个Ac,如果没有,则认为是非法的连接,后续的认证就没有了。

ssh公钥认证的使用:
客户端产生公密钥对,将客户端的公钥添加进服务端用户的ssh认证中。具体操作:
首先  ssh-keygen 命令产生公私钥对(客户端linux),或者使用window的ssh客户端如secureCRT,putty等生成
然后 将第一步生成的公钥id_rsa.pub 上传到 服务端,接着 cat id_rsa.pub >> 用户目录/.ssh/ authorized_keys  将公钥添加进认证中
第一步生成的密钥放在本地用于跟远程主机的认证
 
 

参考阅读:

1.数字签名是什么?

2.SSH原理与运用(一):远程登录

3.ssh登录过程详细介绍

 

ssh公钥认证原理及设置root外的其他用户登录ssh的更多相关文章

  1. 阻止除root外的其他用户登录

    在对系统进行某些更新时,你可能不希望用户登录,这时可以使用/ e t c / n o l o g i n文件,大多数系统都提供这个文件.一旦在/ e t c目录中使用t o u c h命令创建了一个名 ...

  2. Linux配置SSH公钥认证与Jenkins远程登录进行自动发布

    公钥认证,是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密:另一个称为密钥(private key),只有拥有者才能看到,用于解密. 在使用jenkins ...

  3. 转: SSH 公钥认证

    转: http://blog.knownsec.com/2012/05/ssh-%E5%85%AC%E9%92%A5%E8%AE%A4%E8%AF%81/ SSH 公钥认证 2012-05-15 简介 ...

  4. SSH公钥认证+优化

    一 ssh公钥认证流程: sshclinet机器:产生公私钥(公钥相当于一把锁) sshclient:将公钥发给sshserver(抛出锁子) sshclinet去连sshserver不需要密钥   ...

  5. [svc][op]SSH公钥认证+优化

    一 ssh公钥认证流程: sshclinet机器:产生公私钥(公钥相当于一把锁) sshclient:将公钥发给sshserver(抛出锁子) sshclinet去连sshserver不需要密钥 二 ...

  6. SSH公钥认证(码云)

    开发者向码云版本库写入最常用到的协议是 SSH 协议,因为 SSH 协议使用公钥认证,可以实现无口令访问,而若使用 HTTPS 协议每次身份认证时都需要提供口令.使用 SSH 公钥认证,就涉及到公钥的 ...

  7. 使用SecureCRT设置linux系统登录的ssh公钥认证

    1.修改ssh配置文件/etc/ssh/sshd_configRSAAuthentication yes                             //使用RSA加密算法PubkeyAu ...

  8. linux配置ssh公钥认证,打通root用户的免密码输入的scp通道

    1.ssh-keygen ssh-keygen是unix-like系统的一个用来生成.管理ssh公钥和私钥的工具. 2.用法 常用的重要的选项有: -b num   指定生成多少比特长度的key,单位 ...

  9. OpenSSH 密码和公钥认证原理探究

    目录 配置和保护SSH H3 - 使用SSH 访问远程命令行 H4 - 什么是OpenSSH ? H4 - 登录方式: H4 - 登录并执行临时命令: H4 - 查看登录用户 H4 - 登录原理 密码 ...

随机推荐

  1. C++ Primer 5 CH2 变量和基本类型

    C++ 是一种静态数据类型语言,它的类型检查发生在编译时.因此,编译器需要知道每一个变量对应的数据类型. 2.1 基本内置类型 算术类型 C++ 标准并没有规定带符号类型应如何表示,但是约定了在表示范 ...

  2. 【转】请求处理机制其三:view层与模板解析

     进入 View 了 如果处理过程这时候还在继续的话,处理器会调用 view function.Django 中的 Views 不很严格因为它只需要满足几个条件: 必须可以被调用. 必须接受 djan ...

  3. UWP--集合绑定数据

    使用 ObservableCollection   列表控件主要是 ListBox.ListView.GridView 等. 为列表控件绑定数据不再是为 DataContext 属性赋值,应该使用列表 ...

  4. [转]利用excel进行线性规划求解

                           利用线性回归方法求解生产计划 方法一: 1.建立数学模型: 设变量:设生产拉盖式书桌x台,普通式书桌y台,可得最大利润 ‚确定目标函数及约束条件 目标函 ...

  5. Vue学习之路---No.7(分享心得,欢迎批评指正)

    老规矩,先回顾一下上回的重点: 1.对于input框,若为单选框,如果没有对其设置value,那么其checked的值将在true Or false之间切换:如果设置了value,那么将会切换valu ...

  6. curl中通过json格式吧post值返回到java中遇到中文乱码的问题

    首先是: curl中模拟http请求: curl -l 127.0.0.1:8080/spacobj/core/do?acid=100 -H "token:101hh" -H &q ...

  7. Chrome 下动画卡顿问题的另一种可能

    [现象] 动画出现了明显的卡顿,且仅仅出现在 chrome 中. [原因排查] 一开始使用了css动画的时候已经出现了卡顿.找到如下的文章:CSS3 动画卡顿解决方案.深入浏览器理解CSS anima ...

  8. C#生成漂亮验证码完整代码类

    using System;using System.Web;using System.Drawing;using System.Security.Cryptography; namespace Dot ...

  9. iOS开发之NSTimer

    1.NSTimer叫做“定时器”,它的作用如下 Ø 在指定的时间执行指定的任务 Ø 每隔一段时间执行指定的任务 2.调用NSTimer下面的方法就会开启一个定时任务 + (NSTimer *)sche ...

  10. Activity猫的一生-故事讲解Activity生命周期

    大家好,关于Android中Activity的生命周期,网上大多数文章基本都是直接贴图.翻译API,比较笼统含糊不清. 我就用故事来说一说: 有个人叫User,TA养了几只猫,有只猫叫Activity ...