SSH全称(Secure SHell)是一种以安全性闻名的应用层网络通信协议,用于计算机间的安全通信,是目前比较成熟的远程登陆解决方案。
它提供两种方法登陆:
1.密码登陆
2.公钥登陆
 
密码登陆
 
1.客户端填写用户名密码发起远程登陆
2.远端服务器收到登陆请求后,会将本地的一个公钥发送给客户端
3.客户端收到公钥后,将自己的登陆信息用远端服务器的公钥加密,并将加密后的结果发送给远端服务器。
4.远端服务器收到登陆密文后,用本地私钥解密,拿到登陆信息到数据库比较。登陆信息无误时,显示登陆成功。有误时就报错。
5.登陆成功后,客户端将会将远端服务器的公钥保存到本地,等下次再登陆时,客户端检测到收到的公钥已经在本地存在(通常保存的目录:$HOME/.ssh/known_hosts),就不会报警告了
 
提示:
在密码登陆进行到第2步时,客户端收到了服务器的公钥,但是不确定这个公钥到底是不是要访问的目标服务器(也可能时中间攻击者,发送过来的假公钥)。此时会有提示
 # ssh user@host
The authenticity of host 'host (18.18.229.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?

如果确定这个公钥就是目标服务器发过来的公钥,就点击yes,完成登陆。


公钥登陆

公钥登陆相对密码登陆可以避免中间攻击,同时也简单很多
1.客户端在本地生成一对公私钥
2.将客户端本地生成的公钥手动添加到远端服务器上
3.客户端发起登陆请求到远端服务器
4.远端服务器收到请求后,会本地生成一串随机字符,并将该随机字符串发送给客户端
5.客户端收到远端服务器的随机字符串后,用本地私钥加密,并将密文传给远端服务器
6.远端服务器将收到的密文用保存的客户端公钥解密,并将解密结果与原随机字符串对比,若一致的话证明客户端可信,允许登陆。
提示:
客户端生成公私钥的步骤如下:
第一步:在本地机器上使用ssh-keygen产生公钥私钥对
执行命令:
ssh-keygen -t rsa -C "150321****@163.com"
-t :表示加密类型
-C :表示密钥标示字符串
 
第二步:将公钥id_rsa.pub添加到GITLab中的SSHKEY上
执行命令:
192:~ zhoufei$ cd ~/.ssh
192:.ssh zhoufei$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBQYZidTBczPtJ22xNJwl7Pq+yaZnualVS8juad3Oq+w6v5kgin9sW+xs7w9qrGmWHTkkOIPvckmqY7qobazI32YzI9IKFE2yGm51H1pXM4t9iEB0OCHdy1s1D2gB/bNI2ZJPhDjLOfbGO1Mj9B85n8WR0dy8eYSRBhUneiKor8ENnCvP1Sw4XOsEg6aDCMNRCzDY94Ar4ps41hcg34dNS2eMPsXMrTrz8fCv+IbBltUMDVdcoEFwb8VyYZ8ZspbY6zzRc1nZ5flhfGoB6Zjmmz2tSGCnNS16GdTpoGJd+UaiqrWNuocYWorPocbeMiIi+duZfvYVRNDCmaN0zUlwl****977961@qq.com

若添加后,无法正常拉取和提交,就本地查询是否有客户端身份信息

abcdeMacBook-Pro:.ssh zhoufei$ ssh-add -L
The agent has no identities.

解决方法:

abcdeMacBook-Pro:.ssh zhoufei$ ssh-add
Enter passphrase for /Users/zhoufei/.ssh/id_rsa:
Identity added: /Users/zhoufei/.ssh/id_rsa (/Users/zhoufei/.ssh/id_rsa)
 
 
 
 

SSH安全登陆原理:密码登陆与公钥登陆的更多相关文章

  1. SSH免密登陆原理及实现

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.SSH简介 SSH(Secure Shell)是一种通信加密协议,加密算法包括:RSA.DSA等. RSA:非对称加密算法,其安全性基于极其困难 ...

  2. 【笔记】虚拟机用Xshell登陆报错“ssh服务器拒绝了密码”解决方法

    自己本地安装了VMware Workstation之后,创建虚拟机,一开始是可以用Xshell登陆的,几天后,重启了电脑以及虚拟机,发现无法登陆了,还没有输入密码就有如下报错信息 这时候开始排查原因, ...

  3. 使用ssh公钥登陆

    记录一下使用的具体命令,具体参考: Centos设置禁止密码登录而只使用密钥登录SSH方法  优先参考这个. ssh使用公钥授权不通过的问题解决 Xshell配置ssh免密码登录-密钥公钥(Publi ...

  4. ssh和ssh-copy-id以及批量多机无密码登陆详解

    本文主要围绕着ssh服务以及如何通过ssh-copy-id实现无密码登陆. 1. sshd 服务以及配置   2.ssh-copy-id命令的使用以及原理.3.批量多机互相信任. 1. sshd 服务 ...

  5. SecureCRT上使用公钥登陆Linux服务器

    SecureCRT部分配置 1.首先生成公钥. 打开SecureCRT(我的版本为7.0,估计其他版本基本相同)程序,点击菜单栏的“工具”->“创建公钥”.按照步骤执行.其中一步比较重要就是选择 ...

  6. Xshell配置ssh免密码登录-密钥公钥(Public key)

    1 简介 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到linux/unix的方法. 使用密钥登录分为3步: 1 ...

  7. Linux root用户密码重置,远程登陆,文件基本属性

    Linux root用户密码重置,远程登陆,文件基本属性 忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码 ...

  8. 设置ssh只允许用户从指定的IP登陆

    假设 我们公司的固定IP是  183.21.89.249   连接上我们自己进行管理的服务器   然后编辑ssh的配置文件默认  /etc/ssh/sshd_config   在文件最后面另起一行添加 ...

  9. xampp 用phpmyadmin在页面上修改密码后,无法登陆,密码没问题

    xampp 用phpmyadmin在页面上修改密码后,无法登陆,密码没问题一直提示密码错误, 什么原因? ------解决方案--------------------改了密码之后,phpmyadmin ...

随机推荐

  1. C#中索引器的作用和实现。

    官方描述:索引器允许类或结构的实例就像数组一样进行索引.索引器形态类似于,不同之处在于它们的取值函数采用参数. 这一功能在创建集合类的场合特别有用,而在其他某些情况下,比如处理大型文件或者抽象有些资源 ...

  2. 自定义 Asp.Net SessionID 获取方式

    新建类 CustomSessionIDManager public class CustomSessionIDManager : SessionIDManager, ISessionIDManager ...

  3. WPF 使用QRCoder生成二维码

    vs中使用Nuget获取QRCoder 窗体中添加按钮和Iage <Window x:Class="QRCoderTest.MainWindow" xmlns="h ...

  4. MyBatis入门及CRUD

    MyBatis是一个ORM的数据操作框架 myBatis的基本配置 首先创建一个普通 java项目,引入响应jar包,然后引入mybatis的xml配置, <?xml version=" ...

  5. python unittest框架理解与总结(二)

    unittest基本原理: ♦整个平台的搭建使用的是python的unittest测试框架,这里简单介绍下unittest模块的简单应用. ♦unittest是python的标准测试库,相比于其他测试 ...

  6. QuantLib 金融计算——基本组件之 InterestRate 类

    目录 QuantLib 金融计算--基本组件之 InterestRate 类 InterestRate 对象的构造 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. Qua ...

  7. IntelliJ IDEA 18 周岁,吐血推进珍藏已久的必装插件

    IntelliJ IDEA是目前最好最强最智能的Java IDE,前几天,他刚刚年满18岁.  本文,给大家推荐几款我私藏已久的,自己经常使用的,可以提升代码效率的插件. IDEA插件简介 常见的I ...

  8. Webpack学习错误解决笔记

    错误1:在用npm install 安装模块时,时常会出现没有以下类似的错误 解决方法:右键点击node_modules文件夹,选取属性,将文件夹只读选项去除 错误2:在学习到清理/dist文件夹这块 ...

  9. 豆瓣电影信息爬取(json)

    豆瓣电影信息爬取(json) # a = "hello world" # 字符串数据类型# b = {"name":"python"} # ...

  10. js中的promise详解

    一 概述   Promise是异步编程的一种解决方案,可以替代传统的解决方案--回调函数和事件.ES6统一了用法,并原生提供了Promise对象.作为对象,Promise有一下两个特点: (1)对象的 ...