ssh服务登录原理与配置

文章目录

  • 前言
  • 一、基于口令的认证(用户名密码)
  • 二、基于公钥的认证(免密登录)
  • 三、禁止用户登录和修改端口
  • 四、免密登录具体操作

前言

非对称加密是在认证用户连接的时候使用的,对称加密是在用户连接之后开始传输数据的时候加密数据的

一、基于口令的认证(用户名密码)

在这里插入图片描述
1.客户端请求连接;
2.服务端将公钥发送到客户端(需要用户同意,公钥保存在用户家目录下 的.ssh/known_hosts);
3.客户端使用公钥加密自己的密码;
4.服务端收到客户端用公钥加密的密码以后用私钥进行解密;
5.使用解密的密码进行验证,验证没问题登录成功。
在这里插入图片描述
注:但是要确认公钥是所需要连接的服务器发出的,有坏人会进行中间人攻击,利用它自己的公钥发送给用户,用户使用了坏人的公钥加密密码,这样坏人解密以后就知道了用户的密码,然后就用用户的密码去连接真正的服务器。

二、基于公钥的认证(免密登录)

1.客户端要首先生成一对密钥(公钥和私钥)

2.把客户端的公钥需要你手动放到服务器上面(要手动的放到服务器,首先得知道这个服务器),这里就已经确保服务器是可信的。放到服务器的用户家目录的~/.ssh/authorized_keys

3.客户端请求服务器

4.服务器收到客户端的请求之后,先生成随机数random_server, 使用客户端放在authorized_keys这个文件中的公钥对随机数进行加密pubkey(random_server)发送给客户端

5.客户端有公钥和私钥,客户端收到这个加密的数据pubkey(random_server), 客户端使用私钥进行解密拿到random_server使用MD5(hash) 对random_server和sessionkey(会话密钥,在密钥交换步骤产生的)加密形成一个摘要digest1发送给服务器

6.服务器接收到digest1, 然后服务器本身自己使用之前协商过的MD5算法,自己也知道random_server, 也知道会话密钥sessionkey也是使用MD5算法对random_server sessionkey进行加密形成摘要digest2,最后去比较digest1 和 digest2是否相等,如果相等,登录成功,如果不相等,登录失败。
在这里插入图片描述

三、禁止用户登录和修改端口

配置文件/etc/ssh/sshd_config
PermitRootLogin设置no为不允许root用户登录,设置为yes为允许root用户登录
在这里插入图片描述

设置端口号为10086,如果修改配置文件后重启失败可能是selinux影响,可以关闭selinux解决
在这里插入图片描述

客户端不验证指纹StrictHostKeyChecking ask   (ssh_config文件)
密码生成工具:pwgen -cnBs1 7 3
踢出登录的用户:pkill -kill -t pts/1

四、免密登录具体操作

本机IP192.168.68.178
服务器IP192.168.68.181(需要被登录的机器)

ssh-keygen #生成公钥与私钥
ssh-copy-id -p 2222  zhangsan@192.168.68.181 #将公钥传到需要被登录的机器,端口号修改过2222,默认是22

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高端知识竞赛中用到的软件和硬件有哪些

现在单位搞知识竞赛,已不满足于用PPT放题,找几个简单的抢答器、计分牌弄一下了,而是对现场效果和科技感要求更高了。大屏要分主屏侧屏,显示内容要求丰富炫酷;选手和评委也要用到平板等设备;计分要大气些&am…

ES6(三)

文章目录 Promise概念作用回调地狱Promise使用对象的状态Promise.allPromise.race Generator 函数概念基本语法异步流程 Class语法类的写法getter与setter静态属性和静态方法继承模块化 Promise 概念 Promise 是异步编程的一种解决方案,比传统的解决方案回调函数,…

【JavaEE】多线程案例-单例模式

文章目录 1. 前言2. 什么是单例模式3. 如何实现单例模式3.1 饿汉模式3.2 懒汉模式4. 解决单例模式中遇到的线程安全问题4.1 加锁4.2 加上一个判断解决频繁加锁问题4.2 解决因指令重排序造成的线程不安全问题 1. 前言 单例模式是我们面试中最常考到的设计模式。什么是设计模式呢…

苹果电脑 m1 apple silican docker 安装 redis 6.2

安装环境: 苹果电脑,m1, apple silican, 系统版本13.5.2,32G内存 docker版本:4.15.0 redis版本:6.2,arm 64位 (https://hub.docker.com/) redis.conf 下载地址:https://redis.io/docs/manag…

JS+jQuery常用方法笔记

1、如何为一个按钮添加点击事件&#xff1f; 例&#xff1a;按钮一&#xff1a; <a class"layui-btn btnOne">按钮一</a>为其添加点击事件&#xff1a;方法一&#xff1a; $("#btnOne").click(function (e) {alert(111); });方法二&#xff…

准备篇(三)Python 爬虫第三方库

第三方库无法将 "pip" 识别ModuleNotFoundError: No module named pip install 安装路径相关问题requests 库和 BeautifulSoup 库requests 库BeautifulSoup 库第三方库 Python 的 标准库 中提供了许多有用的模块和功能,如字符串处理、网络通信、多线程等,但它们并…

(2023 最新版)IntelliJ IDEA 下载安装及配置教程

IntelliJ IDEA下载安装教程&#xff08;图解&#xff09; IntelliJ IDEA 简称 IDEA&#xff0c;由 JetBrains 公司开发&#xff0c;是 Java 编程语言开发的集成环境&#xff0c;具有美观&#xff0c;高效等众多特点。在智能代码助手、代码自动提示、重构、J2EE 支持、各类版本…

IntelliJ IDEA使用——插件推荐

官网插件库&#xff1a;https://plugins.jetbrains.com/search 代码规范检测&#xff1a;Alibaba Java Coding Guidelines码云&#xff1a;Giteemybatis插件&#xff1a;MyBatisX多颜色括号&#xff1a;Rainbow Brackets操作快捷键提示&#xff1a;Key Promoter X力扣&#xff…

leetcode做题笔记144. 二叉树的前序遍历

给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 思路一&#xff1a;递归 c语言解法 void preorder(struct TreeNode* root, int* res, int* resSize) {if (root NULL) {return;}res[(*resSize)] root->val;preorder(root->left, res, resSize);pr…

ES6 特性

一、ES6 1.1 ES6 概念 1.1.1 什么是 ES ES 全称 EcmaScript 是脚本语言的规范JavaScript 是 EcmaScript 的一种实现ES 新特性就是指 JavaScript 的新特性 1.1.2 为什么要使用 ES 语法简单&#xff0c;功能丰富框架开发应用前端开发职位要求 1.1.3 为什么要学习 ES6 ES6 …

时间序列分析1--生成和导出时间序列数据

时间序列数据的生成 直接录入 1.行录入 ts.(price,startc(2015,1),frequency 12) # price为时间序列变量&#xff0c;start为起始读入时间 frequncy指定每年读入的数据的频率&#xff0c;frequncy4为季度数据、frequncy52为星期数据 2.列录入 scan() 1:101 ....6:7 7:…

stm32 串口发送和接收

串口发送 #include "stm32f10x.h" // Device header #include <stdio.h> #include <stdarg.h>//初始化串口 void Serial_Init() {//开启时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Pe…

FiddlerScript 脚本使用正则表达式替换响应内容

使用 Fiddler 进行抓包时&#xff0c;对特定 url 接口响应内容进行部分匹配替换处理&#xff0c;可以在 FiddlerScript 的 OnBeforeResponse 事件中编写代码来完成。 本文如下代码示例是对某接口请求中的特定内容进行替换处理&#xff0c;如下&#xff1a; static function On…

QString类型的小数转Int类型

QString t "555.5"; double tt t.toInt(); // 将字符串转换为浮点数 // 现在 tt 的值应该为 0 在执行 t.toInt() 时&#xff0c;返回的结果为0&#xff0c;而不是预期的555。这是因为 toInt() 函数在将字符串转换为整数时遇到了非法字符。 toInt() 函数是 QStrin…

消息中间件介绍

消息中间件利用高效可靠的消息传递机制进行异步的数据传输&#xff0c;并基于数据通信进行分布式系统的集成。通过提供消息队列模型和消息传递机制&#xff0c;可以在分布式环境下扩展进程间的通信。ActiveMQ、RabbitMQ、ZeroMQ 消息中间件的作用 解耦&#xff1a; 冗余〈存储…

在UOS/Deepin下安装 Python 3.11.5 图文详解

01 先把操作系统更新一下 在开始菜单中&#xff0c;找到“终端”&#xff0c;点击启动&#xff0c;并依次输入以下两条命令即可&#xff1a; sudo apt update sudo apt upgrade 特别说明&#xff1a;Uos/Deepin 系统&#xff0c;要先进入“开发者模式”才行。“ 设置 — 通用…

VB求平均值

VB求平均值 Private Function pj(x() As Integer) As SingleDim m%, n%, i%, s%m LBound(x): n UBound(x)For i m To ns s x(i)Next ipj s / (n - m 1) End Function Private Sub Command1_Click()Dim a%(1 To 10), i%, aver!For i 1 To 10a(i) Int(Rnd() * 10) 随机…

redis集群主从扩容(docker中)

redis集群主从扩容&#xff08;docker中&#xff09; 1、新建6387、 6388两个节点 新建后启动查看是否8节点 docker run -d --name redis-node-7 --net host --privilegedtrue -v /data/redis/share/redis-node-7:/data redis:6.2.7 --cluster-enabled yes --appendonly yes…

组里来了一个实习生,一行代码引发了一个惨案

大家好&#xff0c;我是静幽水&#xff0c;一名大厂全栈程序员&#xff0c;今天给大家分享一个案例&#xff0c;看似简单。却容易引发惨案。 事情是这样的&#xff0c;最近组里来了一个实习生&#xff0c;因为项目工作量大&#xff0c;人力比较紧张&#xff0c;所以就分配了一…

Rocky Linux 9安装后ssh不能登录

Rocky Linux是CentOS的原创始人发行的版本&#xff0c;为的是解决CentOS停服问题&#xff0c;该版本是基于Red Hat Enterprise Linux 9的下游发布。 在Rocky Linux 9版本中&#xff0c;为了增加安全性&#xff0c;默认情况下禁用SSH root密码登录。这是系统默认设定的规则&…