SSH远程登录协议

目录

什么是ssh服务器

概念

优点

原理

SSH登录

方法一

无需验证

方法二

格式: ssh -l   用户名    IP 地址  -p port

-l :指定登录名称

-p:选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)

服务端配置

1.修改默认端口    :17行修改自己的默认端口

禁止root用户登录   :38行修改为no,默认注释并写的yes

禁止普通用户登录

白名单

1.编辑配置文件

添加一条指令允许所有主机访问我的xyc1   , 只允许用户在192.168.17.25上访问我xyc

黑名单

1.配置文件

添加一条命令   禁止所有人连接xyc

pc2 192.168.17.25    登录xyc失败

ssh服务的最佳实践

使用秘钥对及免交互验证登录

原理:

用户/密码:

                                                  密码登录

                                                 

                                                 公钥登录

实验免密交互登录

1.PC1(192.168.17.55)

2.将PC1的公钥拷贝到PC2

3.切换到PC2(192.168.17.25)

4.切换到PC1(192.168.17.55)验证


什么是ssh服务器

概念

SSH(Secure Shell)是一种安全的加密协议,用于远程连接服务器。SSH服务器允许用户通过安全的方式远程访问服务器,执行命令或传输文件。SSH服务由服务端软件(如OpenSSH)和客户端(如SecureCRT、Putty、xshell等)组成。SSH默认使用22端口提供服务,它有两个不兼容的ssh协议版本,分别是ssh1和ssh2。SSH服务端是一个守护进程,它在后台运行并监听来自客户端的连接请求。

优点

ssh:加密  压缩   远程连接加密协议  (3389端口)

telnet:明文   无压缩  远程协议

telnet  192.168.17.55    80   命令(查看80端口号是否打开)

原理

客户端首次发起连接,服务端  会生成一个随机会话id   

会将  服务端的  公钥以及会话id   发给对面客户端

客户端收到 会话id  以及 服务端的公钥

会用客户端自己的公钥 以及会活id 做运算,产生一个结果

然后再服务端公钥加密

再将这个加密结果 传给服务端

服务端收到加密结果后  会用自己的私钥解密得到 客户端的公钥和会话id运算结果

因为已知会话id  所以可以得到客户端公钥   

双方持有对方公钥

SSH登录

ssh  选项   用户名   IP地址

方法一

[root@localhost ~]# ssh root@192.168.17.25
#默认使用22端口  root(对方的用户名)加IP地址,首次登会询问密码

无需验证

[root@xyc ~]# vim /etc/ssh/ssh_config
修改配置文件 无需验证   有安全风险

方法二

格式: ssh -l   用户名    IP 地址  -p port

-l :指定登录名称

-p:选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)

[root@xyc ~]# ssh -l root 192.168.17.25

-t :连跳

[root@localhost ~]# ssh -t 192.168.17.25 ssh -t 192.168.17.21

服务端配置

1.修改默认端口    :17行修改自己的默认端口

[root@localhost ~]# vim /etc/ssh/sshd_config

禁止root用户登录   :38行修改为no,默认注释并写的yes

[root@localhost ~]# vim /etc/ssh/sshd_config

禁止普通用户登录

[root@localhost xyc]# vim /etc/pam.d/su

白名单

1.编辑配置文件

[root@localhost ~]# vim /etc/ssh/sshd_config

添加一条指令允许所有主机访问我的xyc1   , 只允许用户在192.168.17.25上访问我xyc

AllowUsers xyc@192.168.17.25  xyc1

本机 192.168.17.55

pc1  192.168.17.30

访问xyc1  成功

访问xyc失败

pc2 192.168.17.25

访问xyc1  成功

访问xyc1  成功

黑名单

1.配置文件

[root@localhost ~]# vim /etc/ssh/sshd_config

添加一条命令   禁止所有人连接xyc

DenyUsers xyc

pc2 192.168.17.25    登录xyc失败

ssh服务的最佳实践

  1. 建议使用非默认端口 22

  2. 禁止使用protocol version 1

  3. 限制可登录用户 白名单

  4. 设定空闲会话超时时长

  5. 利用防火墙设置ssh访问策略

  6. 仅监听特定的IP地址 公网 内网

  7. 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs

  8. 使用基于密钥的认证

  9. 禁止使用空密码

  10. 禁止root用户直接登录

  11. 限制ssh的访问频度和并发在线数

  12. 经常分析日志 分离

使用秘钥对及免交互验证登录

原理:

           1. 用户/密码

            2.基于秘钥

用户/密码:

            1.生成公钥和私钥

             2.将公钥导给对面

                                           

                                                    密码登录

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

  2. 用户会根据服务器发来的公钥对密码进行加密

  3. 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

     

                                                 

                                                 公钥登录

                           

  1. 首先在客户端生成一对密钥(ssh-keygen)

  2. 并将客户端的公钥ssh-copy-id 拷贝到服务端

  3. 当客户端再次发送一个连接请求,包括ip、用户名

  4. 服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc

  5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

  6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

  7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

                        

实验免密交互登录

1.PC1(192.168.17.55)

ssh-keygen -t ecdsa  //生成一个密钥

2.将PC1的公钥拷贝到PC2

cd .ssh
ssh-copy-id -i id_ecdsa.pub xyc@192.168.17.25

3.切换到PC2(192.168.17.25)


[root@localhost ~]# cd /home
[root@localhost home]# cd xyc/
[root@localhost xyc]# ls -a
.              .bash_logout   .cache     .ICEauthority  .ssh  视频  下载
..             .bash_profile  .config    .local         公共  图片  音乐
.bash_history  .bashrc        .esd_auth  .mozilla       模板  文档  桌面
[root@localhost xyc]# cd .ssh/
[root@localhost .ssh]# ls
authorized_keys  known_hosts
[root@localhost .ssh]# cat authorized_keys
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAqY3acl5dQz7poIwDeHzTZ62xsr7N3808Ux0I0dG08nuYfTnJZk6AHqPjrebM7Te3OtA8ZmBOy/w8F6/cmtbgI= root@localhost.localdomain
[root@localhost .ssh]# 

4.切换到PC1(192.168.17.55)验证

[root@localhost .ssh]# ssh-add
Could not open a connection to your authentication agent.  //报错未开启连接
[root@localhost .ssh]# ssh-agent bash   //开启连接
[root@localhost .ssh]# ssh-add
Identity added: /root/.ssh/id_ecdsa (/root/.ssh/id_ecdsa)
[root@localhost .ssh]# ssh xyc@192.168.17.25
Last login: Wed Nov 15 22:20:26 2023
[xyc@localhost ~]$ 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mindspore mindyolo目标检测华为昇腾上推理使用、训练;华为OBS文件传输使用

参考&#xff1a; https://github.com/mindspore-lab/mindyolo 使用案例&#xff1a; https://github.com/mindspore-lab/mindyolo/blob/master/GETTING_STARTED.md 安装&#xff1a; pip install mindyolo特别注意opencv-python、opencv-python-headless版本问题&#xff0…

【UI测试】内容及流程

UI测试&#xff08;User Interface Testing&#xff09;是指对于界面设计的测试&#xff0c;目的是验证应用程序在用户界面方面的正确性、易用性和稳定性。 下面是UI测试的内容和流程&#xff1a; 一、UI测试的内容 1、布局测试 页面布局&#xff1a;测试页面上元素排列是否…

php实现选择排序法

选择排序法是一种简单的排序算法&#xff0c;其基本思想是每次从未排序的部分中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;然后放到已排序部分的末尾。 以下是用PHP实现选择排序法的代码示例&#xff1a; <?php function selectionSort($arr) {$n count…

Leetcode刷题详解——岛屿数量

1. 题目链接&#xff1a;200. 岛屿数量 2. 题目描述&#xff1a; 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上…

PHP项目学习笔记-萤火商城-增加一个模块(表涉及到的操作和文件)

背景 是在store的后台添加一个页面&#xff0c;显示的如满意度调查的页面 在router.config.js里面配置一个新的菜单 路径&#xff1a;yoshop2.0-store\src\config\router.config.js 代码如下&#xff0c;很简单&#xff0c;定义了这菜单点击的时候进入的页面&#xff0c;和下面…

C#,数值计算——插值和外推,BaryRat_interp的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 重心有理插值对象 /// Barycentric rational interpolation object. /// After constructing the object, /// call interp for interpolated values. /// Note t…

StyleGAN:彻底改变生成对抗网络的艺术

一、介绍 多年来&#xff0c;人工智能领域取得了显着的进步&#xff0c;其中最令人兴奋的领域之一是生成模型的发展。这些模型旨在生成与人类创作没有区别的内容&#xff0c;例如图像和文本。其中&#xff0c;StyleGAN&#xff08;即风格生成对抗网络&#xff09;因其创建高度逼…

滚雪球学Java(09-1):Java中的算术运算符,你真的掌握了吗?

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

创建数据透视表:根据表中一列作为分类的依据统计每个类别下不同子项数量cross_tab()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 创建数据透视表&#xff1a; 根据表中一列作为分类的依据 统计每个类别下不同子项数量 cross_tab() [太阳]选择题 关于以下代码的说法中正确的是? import pandas as pd data{A:[a1,a2,a1,a2,a…

【PyQt小知识 - 1】:QLineEdit内容的更新和获取、设置无边框

文章目录 QLineEdit更新和获取文本框内容设置为无边框 QLineEdit 更新和获取文本框内容 更新&#xff1a;QLineEdit().setText(text) 获取&#xff1a;QLineEdit().text() from PyQt5.QtWidgets import * import sysapp QApplication(sys.argv)window QWidget() window.re…

数据库概率 期末复习

第一章 绪论 概述 数据 定义&#xff1a;描述事物的符号记录 地位&#xff1a;数据库中存储的基本对象 数据的语义&#xff1a;数据的含义&#xff0c;数据与其语义是不可分的 数据库 定义&#xff1a;长期储存在计算机内、有组织的、可共享的大量数据的集合 特点&…

【SpringBoot3+Vue3】三【实战篇】-后端(优化)

目录 一、登录优化-redis 1、SpringBoot集成redis 1.1 pom 1.2 yml 1.3 测试程序&#xff08;非必须&#xff09; 1.4 启动redis&#xff0c;执行测试程序 2、令牌主动失效&#xff08;代码优化&#xff09; 2.1 UserController设置token到redis 2.2 登录拦截器Log…

计算机网络——物理层-编码与调制(数字基带信号、模拟基带信号、码元、常用编码、基本调制方法、混合调制)

目录 编码与调制 数字基带信号 模拟基带信号 码元 常用编码 不归零编码 归零编码 曼彻斯特编码 差分曼彻斯特编码 编码习题 基本调制方法 调幅 调频 调相 混合调制 QAM-16 编码与调制 在计算机网络中&#xff0c;计算机需要处理和传输用户的文字、图片、音频…

leetcode:476. 数字的补数

一、题目 476. 数字的补数 - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a; int findComplement(int num) 二、思路 将num的每一位取出来&#xff0c;取反后&#xff0c;乘以2的位次方&#xff0c;最终所有结果相加即可得到结果。 如何取出num的每一位&#xff1…

wpf devexpress post 更改数据库

这个教程示范如何使用GridControl编辑数据&#xff0c;和保存更改到数据库。这个教程基于前一个篇。 Items Source Wizard 当 CRUD (Create, Read, Update, Delete) 启动选项时添加Post data功能 Items Source Wizard 生成如下代码&#xff1a; 1、设置 TableView.ShowUpdat…

RabbitMQ之延迟队列(万字总结,手把手教你学习延迟队列)

文章目录 一、延迟队列概念二、延迟队列使用场景三、RabbitMQ 中的 TTL1、队列设置 TTL2、消息设置 TTL3、两者的区别 四、整合 springboot1、添加依赖2、修改配置文件3、添加 Swagger 配置类 五、队列 TTL1、代码架构图2、配置文件类代码3、消息生产者代码4、消息消费者代码 六…

求组合数(笔记)

//组合数2&#xff0c;取值在1e5 //Cab a! / (a - b)! * b! #include<iostream> using namespace std; using ll long long; const ll N 1e4 9, mod 1e9 7; ll fact[N], infact[N];//阶乘&#xff0c;逆元阶乘ll qmi(ll a, ll k, ll p)//逆元模板 {ll res 1;while…

从0开始学习JavaScript--JavaScript 异步编程

在现代的Web开发中&#xff0c;异步编程变得愈发重要。随着用户期望的提高和网络应用的复杂性增加&#xff0c;有效地处理异步操作成为构建高性能、交互丰富的应用的关键。JavaScript作为一门单线程的语言&#xff0c;采用异步机制来处理并发任务&#xff0c;确保用户体验不受阻…

Typora使用教程

文章目录 markdown的使用说明一、标题 这是一级标题这是二级标题二、段落1、换行2、分割线 三、文字显示1、字体2、上下标 四、列表1、无序列表2、有序列表3、任务列表 五、区块显示六、代码显示1、行内代码2、代码块 七、链接八、脚注九、图片插入十、表格十一、流程图1、横向…

php快速排序法

快速排序是一种常用的排序算法&#xff0c;也是最快的排序算法之一。其基本思想是通过一趟排序将待排序的数据分割成两部分&#xff0c;其中一部分的所有数据都比另一部分的所有数据小&#xff0c;然后再对这两部分分别进行快速排序&#xff0c;递归地重复这个过程&#xff0c;…