Linux的SSH服务

news2024/9/23 3:23:06

一.SSH服务简介

1.什么是SSH

        SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

2.SSH协议

2.1 ssh优点

数据传输是加密的,可以防止信息泄露

数据传输是压缩的,可以提高传输速度

2.2 作用

SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。

ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)

2.3 常用的 SSH 软件的介绍

SSH 客户端:finalshell  xshell  putty   secureCRT   MobaXterm

SSH 服务端:openSSH (Centos 7 默认安装)

2.4 openSSH 服务器配置文件

服务名称:sshd
服务端主程序:/usr/sbin/sshd  
服务端配置文件:/etc/ssh/sshd_config 
客户端配置文件:/etc/ssh/ssh_config

openSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。

执行“systemctl start sshd”命令即可启动sshd服务。默认端口使用的22端口。

存放公钥的位置:

首次连接

如何确定此台机器就是我要连的机器?

对比公钥是否相同,相同就是要连入的,不同就不是。

这样验证的目的:防止别人伪装和黑客攻击。

将.10的伪装成.30,.20去远程连接,因为有公钥,直接辨别出是假的,连接不上!

小问题:

旧的机器挂了,新的机器mac地址变了,密钥变了

将之前的密钥文件删除,在重新生成一个,就对应了。

3 公钥传输原理

① 客户端发起连接请求

② 服务端返回自己的公钥以及一个会话id(此处客户端得到服务端的公钥)

③ 客户端生成密钥对

④ 客户端用自己的公钥异或会话id,计算出一个值res,并用服务端的公钥加密

⑤ 客户端发送加密值到服务端,服务端用私钥解密,得到res

⑥ 服务端用解密后的值res异或会话id,计算出客户端的公钥(此处服务端得到客户端公钥)

⑦ 最终:双方各自持有三个密钥,分别为自己的一对公钥、私钥,以及对方的公钥,之后所有的通讯都会被加密。

4 加密通讯原理

4.1 对称加密

① 概念

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。

② 常用算法

对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

③ 特点

1、加密方和解密方使用同一个密钥;
2、加密解密的速度比较快,适合数据比较长时的使用;
3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;

④ 优缺点

优点:算法公开、计算量小、加密速度快、加密效率高

缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

4.2 非对称加密

① 概念

        非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

② 常用算法

  • RSA:目前使用最广泛的算法

  • DSA:数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快

  • ECC(椭圆曲线加密算法)

  • ECDSA:椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障

③ 原理

        首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下。

④ 优缺点

相比于对称加密技术,非对称加密技术安全性更好,但性能更慢

二.SSH的运用

1. ssh配置文件信息

在linux中实现ssh,是通过opsnSSH的sshd服务提供的

1.1 存放ssh服务端的配置文件

  /etc/ssh/sshd_config

vim /etc/ssh/sshd_config
 
常用选项配置
 
#Port 22
#ListenAddress 0.0.0.0


#LoginGraceTime 2m         登录验证时间为两分钟
#PermitRootLogin yes       允许root用户登录(安全考虑,这里可以设置为no,禁止root用户登录)
 
#MaxAuthTries 6             最大重试的次数为6
PasswordAuthentication yes   允许空密码用户登录
UseDNS  no                   禁止DNS反向解析,提高服务器的响应速度

1.2 存放ssh客户端的配置文件

/etc/ssh/ssh_config

2. ssh的基本用法

2.1 直接连接

格式:ssh   ip地址

第一次连接时会询问你是否要验证公钥,同意之后,下次登录就会自动获取服务端的公钥

2.2 连接指定用户

格式:

①   ssh   用户名@ip地址

②   ssh  -l   用户名    ip地址

2.3 指定端口号

格式:  ssh    ip地址     -p    端口号

sshd服务的默认端口号是 22,如果不是此端口,需要 -p 来指定端口

在  /etc/ssh/sshd_config下面修改端口号

修改完配置之后需要重启服务,是配置文件生效,再去远程连接

2.4 跳板机

格式:   ssh   -t  ip地址   ssh   -t   ip地址     ssh   -t     ip地址   ........

使用跳板是为了方便和安全

实例:

模拟一道防火墙不让你去连接最终主机

[root@localhost .ssh]#iptables  -A  INPUT  -s 192.168.44.30   -j REJECT 
#模拟防火墙
[root@localhost ~]# ssh  -t 192.168.44.20  ssh -t 192.168.44.30  ssh 192.168.44.40
#方便跳板连接

2.5 直接跟上命令远程操作

格式: ssh   ip地址    想使用的命令

3. 黑白名单

白名单:默认拒绝所有,只有白名单上允许的人才可以访问

黑名单:默认允许所有,只有黑名单上的用户让你不允许访问

(白名单优先级高,但一般不会同时使用白名单和黑名单,白名单使用会多一点)

3.1 白名单

在  /etc/ssh/sshd_config   里手动添加

192.168.44.10  

192.168.44.20来远程连接

192.168.44.30来远程连接

3.2 黑名单

192.168.44.20来远程连接

192.168.44.30来远程连接

4. 修改默认端口

5. 禁止root用户登录

虽然阻止了root ,但是普通用户可以使用 su 切换到root用户

修改pam认证模块

6. 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. 经常分析日志 分离

如果有一天登录ssh变得非常非常慢,请禁用反向解析

三. 使用密钥对免交互验证登录

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

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

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

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

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

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

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

步骤:

1.创建密钥

2. 将密钥文件传送到对面

在服务端查看是否收到密钥文件,如果有,会生成一个 authorized_keys 文件

3. 登录验证

此时我们去登录服务端,需要输入密钥文件密码

如果不想输入验证码,就是用免交互登录

4.免交互

先输入 ssh-agent  bash 将这个命令交给 bash 去管理

再输入 ssh-add  是将用户的私钥添加到运行中的 ssh-agent 中,这样在后续的SSH连接过程中,就不需要每次都手动输入私钥的密码了。一旦私钥被添加到ssh-agent 中,它会暂时保存解密后的私钥以供后续使用。

机器重启会失效,需要再次输入密码。
 

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

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

相关文章

Elasticsearch:Search tutorial - 使用 Python 进行搜索 (四)

在本节中&#xff0c;你将了解另一种机器学习搜索方法&#xff0c;该方法利用 Elastic Learned Sparse EncodeR 模型或 ELSER&#xff0c;这是一种由 Elastic 训练来执行语义搜索的自然语言处理模型。这是继之前的文章 “Elasticsearch&#xff1a;Search tutorial - 使用 Pyth…

NeRF算法模型简析:从理论到实践的轻度解析以及如何编辑和微调

nerf模型可编辑的&#xff1f; NeRF模型的可编辑性&#xff08;editability&#xff09;指的是能够修改预训练的NeRF模型以改变其生成的场景或对象的某些特征&#xff0c;而不是从头开始重新训练模型。这种编辑可以是改变颜色、形状、纹理或者添加、移除和修改场景中的对象。 在…

在CentOS上设置和管理静态HTTP网站的版本控制

在CentOS上设置和管理静态HTTP网站的版本控制是一项重要的任务&#xff0c;它可以帮助您跟踪和回滚对网站所做的更改&#xff0c;确保数据的一致性和完整性。以下是在CentOS上设置和管理静态HTTP网站的版本控制的步骤&#xff1a; 安装版本控制系统在CentOS上安装Git或其他版本…

LeetCode讲解篇之78. 子集

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个start变量记录当前从哪里开始遍历搜索nums 搜索过程的数字组合加入结果集 然后从start下标开始遍历nums&#xff0c;更新start&#xff0c;递归搜索 直到搜索完毕&#xff0c;返回结果集 题解代码 class …

记录用python封装的第一个小程序

前言 我要封装的是前段时间复现的一个视频融合拼接的程序&#xff0c;现在我打算将他封装成exe程序&#xff0c;我在这里只记录一下我封装的过程&#xff0c;使用的是pyinstaller&#xff0c;具体的封装知识我就不多说了&#xff0c;可以参考我另一篇博客&#xff1a;将Python…

逼格满满,推荐一个高效测试用例工具:XMind2TestCase !

一、背景 软件测试的核心是什么&#xff1f;毫无疑问是测试分析和测试用例设计&#xff0c;也是日常测试投入最多时间的工作内容之一。 然而&#xff0c;传统的测试用例设计过程有很多痛点&#xff1a; 1、使用Excel表格进行测试用例设计&#xff0c;虽然成本低&#xff0c;但…

POI:对Word的基本操作

1 向word中写入文本并设置样式 package com.example;import org.apache.poi.xwpf.usermodel.*;import java.io.File; import java.io.FileOutputStream;/*** Author&#xff1a;xiexu* Date&#xff1a;2024/1/12 23:54*/ public class WriteWord {static String PATH "…

Linux(Ubantu)交叉编译生成windows(32位,64位)可执行程序和库

机缘 机缘巧合下收到了这个小任务. 工作流 先是找了下资料发现过去的都是关于mingw32. 教程的做法: 增加个源 (trusty 是linux发行的版本标识,比如22.04是jammy deb http://us.archive.ubuntu.com/ubuntu trusty main universe更新源 sudo apt update下载mingw32. sudo…

阅读笔记lv.1

阅读笔记 sql中各种 count结论不同存储引擎计算方式区别count() 类型 责任链模式常见场景例子&#xff08;闯关游戏&#xff09; sql中各种 count 结论 innodb count(*) ≈ count(1) > count(主键id) > count(普通索引列) > count(未加索引列)myisam 有专门字段记录…

通过shell脚本确定当前平台

shell中的变量OSTYPE存储操作系统的名称&#xff0c;也可以使用uname命令来确认当前所在的平台。 shell中的变量HOSTTYPE存储操作系统的架构。 测试代码如下所示&#xff1a; #! /bin/bashecho "use OSTYPE:" if [[ "$OSTYPE" "linux-gnu&quo…

java大学生宿舍共享厨房系统宿舍自习室宿舍洗衣房系统源码包含技术文档

主要功能&#xff1a;学生可注册登录&#xff0c;预约自己宿舍楼栋的共享厨房和评价&#xff0c;也可以使用该楼栋的洗衣房&#xff0c;查看洗衣机吹风机的使用情况和报修&#xff0c;还可以进入该楼栋自习室打卡和评价。管理员可管理所有的学生和宿管&#xff0c;分配宿舍&…

MYSQL的操作

1.库的操作 1.1创建数据库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name 说明&#xff1a; #…

GitHub项目推荐-incubator

项目地址 Github地址&#xff1a;GitHub - apache/incubator-anser 官网&#xff1a;Apache Answer | Free Open-source Q&A Platform 项目简述 这是Apache的一个开源在线论坛&#xff0c;也可以部署成为一个自有的QA知识库。项目主要使用了Go和Typescript来开发&#…

Feature Fusion for Online Mutual KD

paper&#xff1a;Feature Fusion for Online Mutual Knowledge Distillation official implementation&#xff1a;https://github.com/Jangho-Kim/FFL-pytorch 本文的创新点 本文提出了一个名为特征融合学习&#xff08;Feature Fusion Learning, FFL&#xff09;的框架&…

设计模式—— 单例设计模式

单例设计模式 什么是单例模式 单例模式是一种对象创建型模式&#xff0c;使用单例模式&#xff0c;可以保证为一个类只生成唯一的实例对象。也就是说&#xff0c;在整个程序空间中&#xff0c;该类只存在一个实例对象。 为什么使用单例模式 在应用系统开发中&#xff0c;我…

Python测试开发,掌握技巧更上一层楼!

学员学习分享&#xff1a; 自动化测试工作稳定之后&#xff0c;一向对技术着迷的我&#xff0c;迫不及待地要进入测开的世界&#xff0c;在java和Python的方向上&#xff0c;我选择了Python。 原因很简单&#xff0c;比较好上手&#xff0c;而且市场上也比较主流。 在跟着课…

【操作系统】在阅读论文:OrcFS: Orchestrated file system for flash storage是需要补充的基础知

在阅读论文&#xff1a;OrcFS: Orchestrated file system for flash storage是需要补充的基础知识 这篇论文是为了解决软件层次之间的信息冗余问题 To minimize the disk traffic, the file system buffers the updates and then flushes them to the disk as a single unit, …

二极管限幅电路理论分析,工作原理+作用

一、限幅是什么意思&#xff1f; 限幅也就是&#xff0c;将电压限制在某个范围内&#xff0c;去除交流信号的一部分但不会对波形的剩余部分造成影响。通常来说&#xff0c;限幅电路主要是由二极管构成&#xff0c;波形的形状取决于电路的配置和设计。二、限幅电路工作原…

流量预测中文文献阅读(郭郭专用)

目录 基于流量预测的超密集网络资源分配策略研究_2023_高雪亮_内蒙古大学&#xff08;1&#xff09;内容总结&#xff08;2&#xff09;流量预测部分1、数据集2、结果对其中的一个网格的CDR进行预测RMSE和R2近邻数据和周期数据对RMSE的影响 &#xff08;3&#xff09;基于流量预…

C语言实现简易n子棋小游戏(代码含注解)

利用C语言简单实现一个n子棋小游戏&#xff0c;棋盘大小由自己定义 将源文件分为 执行游戏的测试文件(test.c)和保存游戏运行逻辑的相关函数的文件(game.c) 头文件中声明符号和函数的定义(game.h) 游戏执行主要依靠二维数组实现&#xff0c;电脑走棋采用随机值的方法简易地…