ssh服务登陆验证有两种方式:

  1.基于用户名和密码

  2.基于密钥

基于用户名和密码验证过程:

  1)客户端想ssh服务器发起请求,服务器会把自己的公钥发送给客户端,

  2)客户端用服务器的公钥加密自己的密码,并发送给服务器

  3)服务器用自己的私钥解密得到客户端的密码并验证,如果密码正确则登陆成功.

基于秘钥验证过程:

  1)客户端生成一对秘钥

  2)客户端把自己的公钥传送给服务器

  3)客户端发送一个连接请求,信息包括ip和用户名

  4)服务器去authorized_keys文件中查找相应记录,如果有,就生成一个随机字符串

  5)服务器使用客户端的公钥把随机字符串加密后发送给客户端

  6)客户端使用私钥解密,再把得到的字符串发给服务器

  7)服务器对比此字符串是否与自己生成的字符串一致,如果一致就允许登陆

基于秘钥认证示例:

两台主机之间:

  1)客户端生成一对秘钥

  命令格式

  ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"]

    -p 口令,可为空

    -f 指定秘钥存放路径

  也可以所有参数省略直接执行ssh-keygen

  ]# ssh-keygen

  执行后三次回车.会生成未加密的私钥/root/.ssh/id_rsa和公钥/root/.ssh/id_rsa.pub

  2)把公钥文件传输至远程服务器对应用户的家目录,如果写错成私钥文件名,不用担心,传过去的依然是公钥.

  命令格式

    ssh-copy-id [-i [identity_file]] [user@]host

]# ssh-copy-id -i .ssh/id_rsa.pub root@172.18.7.77
root@172.18.7.77's password:
Now try logging into the machine, with "ssh 'root@172.18.7.77'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

3)在服务器端查看/root/.ssh/

]# cat /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAusWy2QOYUC5kuwG+lNO7mWqWO/lvyqhAB1jiEcpAlns//kxVkifRtfDrA0+u7Pi+/eenW/6g1ZA6iP1muyprNXa+F84QjAaIBVlJuizKzF1iVFDOULdbyVRkKxx5Z8rlmG8WPeDl/1q9yIRrjUD84am8FOHsT/tzFLbEoeKL8vd/F6V1FPqlI+DLO28LgQ/b1Q21lJRk/XB6YvmFain9qwlzB0VF4vKVAhwVRmzA6hCxS7zohIJe8Y+1pC654mKwERtaM6PBUYPr/l0iznfU5Dxsvr4d8hp9xe2tDkyi7xkS0wd0DOE7SGbgwqUKxh7iuA+qBdln2h8dtC0dqGPlaw== root@centos6.qt

说明已经传输成功

4)测试

  在客户端直接执行

]# ssh 172.18.7.77
Last login: Thu Jan 4 21:45:22 2018 from 172.18.7.61

  即可免密码直接登陆,不输用户名默认以当前登陆用户身份尝试登陆.

  使用Xshell或SecureCRT之类的客户端软件实现基于秘钥登陆的原理与上文相同,只要通过客户端软件生成一个公钥,并复制到服务器中,将公钥内容追加到 ~/.ssh/authorized_keys中

  之后新建一个以秘钥方式登陆的会话,则可以免密码直接登陆.

SSH服务登陆验证的更多相关文章

  1. 通过SSH服务登陆linux服务器(版本RHEL7)

    通过SSH服务登陆linux服务器(版本RHEL7) SSH服务概述:是一种能够以安全的方式提供远程登陆的协议,也是目前远程管理linux系统的首选方式.在此之前,我们一般使用FTP或者telnet来 ...

  2. 记一次 java 连接 linux ssh服务 权限验证失败的原因和解决过程

    下面的问题我是通过之前的ssh测试类找出原因的,因为我的测试类跑通了,但是程序跑不通,看了一下源码发现还有一处没有进行解密,所以才会权限验证失败. // 出现权限验证失败的原因就在这里,因为老板要求对 ...

  3. docker中安装ssh服务

    系统:Debian Docker 目标:在docker(debian系统)中安装ssh服务,实现远程登陆和控制docker 步骤: 初始状态:通过docker pull debian得到的一个debi ...

  4. 如何搭建ssh服务?

    为了日后便于查询,本文所涉及到的所有命令集合如下: rpm -qa | grep openssh #查看是否安装了openssh软件 service sshd status #服务端的ssh状态 if ...

  5. SSH登陆验证绕过漏洞(cve-2018-10933)

    名称: SSH登陆验证绕过漏洞 CVE-ID: cve-2018-10933 EXPLOIT-DB: https://www.exploit-db.com/exploits/45638/ 平台: Li ...

  6. [SSH服务]——一个SSH无密码登陆实验

    实验拓扑图 实验描述 机房内有两台服务器: (1)B服务器10.0.10.158,充当Web服务器,有普通用户user_00 (2)C服务器10.0.10.191,充当Mysql服务器,有普通用户us ...

  7. 为Ubuntu配置ssh服务 方便远程登陆

    Ubuntu系统必须开启ssh服务后,XP或者其他的主机才可以远程登陆到Ubuntu系统. 1,安装软件包,执行sudo apt-get install openssh-server Ubuntu缺省 ...

  8. ssh服务、密钥登陆配置

    环境内核信息: [root@zabbix-01 ~]# uname -a Linux lodboyedu-01 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:2 ...

  9. Linux服务器开启ssh服务,实现ssh远程登陆!

    最近在学linux,使用ssh远程登陆linux,记录下来! 首先进入/etc目录下,/etc目录存放的是一些配置文件,比如passwd等配置文件,要想使用ssh远程登陆,需要配置/etc/ssh/s ...

随机推荐

  1. python爬虫实战(八)--------知乎

    相关代码已经修改调试成功----2017-4-22 一.说明 1.目标网址:知乎登入后的首页 2.实现:如图字段的爬取 zhihu_question表: zhihu_answer表: 3.数据:存放在 ...

  2. Html-完整表格

    表头th 特殊的单元格:加粗.居中 它的用户是取代td的位置即可 <table border="2"> <tr> <th>姓名</th&g ...

  3. nodejs应用离线安装部署、卸载

    公司写的文档,直接粘贴过来了: 本文档提供node应用一键安装.部署.卸载说明,包含对应脚本文件 默认版本:1.nodejs:v6.11.2.linux-x642.全局npm包:pm2.supervi ...

  4. EF面试题

    为什么用EF而不用原生的Ado.Net? 1.极大的提高开发效率:EF是微软自己的产品,跟VS拉法集成度比较好,开发中代码都是强类型的, xiefl代码效率非常高,自动化程度非常高,命令式的编程. 2 ...

  5. 用户登录注册(安全)(常规、FB、google、paypal) 实战

    /* 用户登录界面 */elseif ($action == 'login'){    if($_SESSION['user_id'])    {        ecs_header("Lo ...

  6. 集合框架以及Map(一)

    集合又称容器,编程思想中对其的定义为持有对象 我们在使用集合或者数组时得到最多的异常就是数组下表越界异常 Java.lang.ArrayIndexOutOfBoundsException这篇文章我们不 ...

  7. Java https认证的坑

    https单向认证的服务端证书不是权威机构颁发的,网上找了点代码不对https证书进行认证后,报如下异常 javax.net.ssl.SSLHandshakeException: Received f ...

  8. Chromium base库分割字符串SplitString

    前一段时间在工作过程中遇到一个场景需要将http response中的request header中的cookie字段取出并进行解析,但是手头没有解析cookie的工具类,同时cookie的表现就是个 ...

  9. C#学习笔记-模板方法模式

    题目:同学摘抄老师给的试卷并给出自己的对应的答案. 实现: static void Main(string[] args) { Console.WriteLine("学生甲抄的试卷:&quo ...

  10. 关于Python的那点吐槽

    之前听到过别人有说过Python只是一个玩具做不了大项目,我当时是嗤之以鼻的,不说豆瓣这样的公司采用Python做的网站,GitHub上那么多大项目都是用Python写的,怎么能说Python只是一个 ...