ssh服务采用“非对称密钥系统”:主要通过两把不一样的公钥和密钥来进行加密与解密的过程

公钥(Public Key):提供给远程主机进行数据加密

私钥(Private Key):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。

环境:  Server:CentOS 6.7(192.168.1.17)        Client: CentOS 7.9(192.168.1.14)

基于密码认证:

原理:

1、Server建立公钥:每次启动sshd服务器,Server会主动查找自己的/etc/ssh/ssh_host*文件。因为这些文件就是Server建立起来的公钥和私钥,一般采用rsa加密方式

2、Client端主动连接要求:若客户端要连接ssh服务器

3、Server端会传输768bit公钥文件给客户端:server公钥需要server私钥解密,因此被截取了,如果没有得到server私钥解密,也是无法查看到内容的,所以公钥明文传输

4、Client端记录/比对Server端的公钥,Client端第一次连接,会将server公钥记录在$HOME/.ssh/known_hosts文件中。若存在记录,则Client端会比对差异,同时Client端会根据Server公钥产生256bit的私钥

5、Client端利用Server发送过来的公钥,将验证的密码加密发送给Server,Server利用自己的私钥进行解密,同时验证密码是否正确(下图的code用户验证密码),验证通过就建立了连接,就可以数据传输了。

操作:

Server端:

创建一个用于远程的账户

ssh端口处于listen状态

Client端:

这里的密码为Server端code用户的密码,Server端要进行code用户密码验证(Client端要用Server公钥给输入的密码加密,然后发送给Server,Server在本地验证code密码是否正确,然后是否建立连接)

Client端会在当前用户的家目录下产生一个.ssh目录,.ssh目录下会建立一个known_hosts文件,用于记录Server的公钥。因为默认用的rsa加密方式,可以通过Server端查看/etc/ssh/ssh_host_rsa.pub与Client端$HOME/.ssh/known_hosts比对看是否一样

基于公钥认证的方式:

原理:

最新文章

  1. ABP框架 - 验证数据传输对象
  2. Moneybookers API支付方式开发 步骤
  3. Dictionary的几种遍历方法
  4. mysql 模糊查询语句比较(LIKE、instr、locate、find_in_set、position)
  5. neutron的基本原理
  6. @Html.Raw()
  7. k-近邻算法理解
  8. 在Eclipse中运行hadoop程序
  9. SocketServer模块
  10. Mybatis分页插件PageHelper的配置和使用方法
  11. css中 padding属性的数值赋予顺序为
  12. Kubernetes基本功能
  13. 【代码笔记】Web-CSS-CSS background背景
  14. HNU 2015暑期新队员训练赛2 H Blanket
  15. 6. 合并排序数组 II
  16. ethereum/EIPs-1102 Opt-in provider access metamask不再默认直接连入网页
  17. codefoce Cooking Time
  18. ReactiveX 学习笔记(16)RxPY
  19. mysql5.7.20:安装教程
  20. running boot2docker -> error in run: Failed to get machine “boot2docker-vm”: machine does not exist

热门文章

  1. 让ThreadPoolExecutor的workQueue占满时自动阻塞submit()方法
  2. RedisPool
  3. 人工智能AI Boosting HMC Memory Chip
  4. 多目标跟踪:CVPR2019论文阅读
  5. 如何运行具有奇点的NGC深度学习容器
  6. 在NVIDIA-Jetson平台上构建智能多媒体服务器
  7. Seata分布式事务框架Sample
  8. Python_selenium页面元素整合设计经验
  9. Redis五种基础与三种高级数据结构解析
  10. java线程和操作系统线程的异同(大图对比)