远程管理SSH服务
一、搭建SSH服务
1、关闭防火墙与SELinux
# 关闭firewalld防火墙 # 临时关闭 systemctl stop firewalld # 关闭开机自启动 systemctl disable firewalld # 关闭selinux # 临时关闭 setenforce 0 # 修改配置文件 永久关闭 vim /etc/selinux/config SELINUX=disabled
2、配置yum源
JumpServer配置外网YUM源 => 阿里云
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # yum clean all # yum makecache
RealServer配置本地YUM源 => 把光盘镜像作为仓库(自建YUM仓库)
① 挂载光盘
# mkdir /mnt/cdrom # mount -o ro /dev/sr0 /mnt/cdrom # chmod +x /etc/rc.local # echo 'mount -o ro /dev/sr0 /mnt/cdrom' >> /etc/rc.local
② 编写local.repo文件
# cd /etc/yum.repos.d # vim local.repo [local] name=local yum baseurl=file:///mnt/cdrom enabled=1 gpgcheck=0
3、openssh软件的安装
SSH服务底层的软件名称叫做openssh,open开源,ssh就是ssh服务。openssh属于C/S架构软件,其拥有客户端与服务器端。
客户端:ssh
服务端:openssh-server
安装步骤:
# yum install openssh -y
检查openssh是否安装成功
# rpm -qa |grep openssh 或 # yum list installed |grep openssh
获取openssh生成的文件列表
# rpm -ql openssh-server # 配置文件 /etc/ssh/sshd_config => ssh服务的主配置文件 /etc/sysconfig/sshd # 服务管理脚本 /usr/lib/systemd/system/sshd.service => systemctl start sshd # 文件共享服务 提供文件上传下载的服务 /usr/libexec/openssh/sftp-server # 二进制文件程序文件 /usr/sbin/sshd # 公钥生成工具 /usr/sbin/sshd-keygen # man手册 /usr/share/man/man5/sshd_config.5.gz /usr/share/man/man8/sftp-server.8.gz /usr/share/man/man8/sshd.8.gz
# rpm -ql openssh-clients # 客户端配置文件 /etc/ssh/ssh_config # 远程copy命令 服务器间进行文件传输 /usr/bin/scp # sftp客户端 上传下载文件操作 /usr/bin/sftp /usr/bin/slogin /usr/bin/ssh /usr/bin/ssh-add /usr/bin/ssh-agent /usr/bin/ssh-copy-id /usr/bin/ssh-keyscan # 客户端man手册 /usr/share/man/man1/scp.1.gz /usr/share/man/man1/sftp.1.gz /usr/share/man/man1/slogin.1.gz /usr/share/man/man1/ssh-add.1.gz /usr/share/man/man1/ssh-agent.1.gz /usr/share/man/man1/ssh-copy-id.1.gz /usr/share/man/man1/ssh-keyscan.1.gz /usr/share/man/man1/ssh.1.gz /usr/share/man/man5/ssh_config.5.gz /usr/share/man/man8/ssh-pkcs11-helper.8.gz
4、查看并修改ssh服务端的配置文件
# man 5 sshd_config
RealServer:禁止root账号远程登录
# man 5 sshd_config PermitRootLogin => yes or no,默认为yes 代表允许通过root账号远程登录此服务器
# vim /etc/ssh/sshd_config 38行 PermitRootLogin no
5、sshd服务管理
# systemctl restart sshd => 重启 # systemctl status sshd => 状态 # systemctl stop sshd => 停止 # systemctl start sshd => 启动 # systemctl enable sshd => 开机自启动 # systemctl disable sshd => 开机不自启 # ps -ef |grep sshd => 进程 或 # netstat -tnlp |grep sshd => 端口 或 # ss -naltp |grep sshd
二、SSH服务任务解决方案
1、创建用户并授权
JumpServer跳板机创建用户并授权
第一步:创建用户与用户组(html前端组,tom与jerry)
# 创建html前端组 # groupadd html # 创建组内用户tom与jerry # useradd -g html tom # useradd -g html jerry
第二步:为用户添加密码
# echo 123456 |passwd --stdin tom # echo 123456 |passwd --stdin jerry
第三步:为开发人员创建数据目录并且设置相应的权限
① 创建用户的数据目录:
# mkdir -p /code/html => 前端组 # ll -d /code/html drwxr-xr-x. 2 root root 6 May 24 10:36 /code/html
② 更改目录的文件所属组(更改为html,代表html组内成员可以对这个目录进行管理)
# chgrp -R html /code/html drwxr-xr-x. 2 root html 6 May 24 10:36 /code/html # chmod -R g+w /code/html drwxrwxr-x. 2 root html 6 May 24 10:36 /code/html
③ 添加粘滞位权限,防止误删除操作
# chmod 1770 /code/html drwxrwx--T. 2 root html 6 May 24 10:36 /code/html
2、测试用户权限
测试用户权限是否设置成功,可以结合第1步一起完成
3、禁用root登录
RealServer服务器端:
# vim /etc/ssh/sshd_config PermitRootLogin no
4、更改SSH默认端口
RealServer服务器端:
# vim /etc/ssh/sshd_config 17行 Port 3712
5、重启SSH服务
# systemctl restart sshd 或 # systemctl reload sshd
restart与reload的本质区别:
① restart其实相当于stop然后在start
② reload不停止现有业务,只是重新加载sshd对应的配置文件
6、在RealServer创建一个code账号
# useradd code # echo 123456 |passwd --stdin code
测试:在JumpServer远程连接RealServer
# ssh -p 3721 code@11.1.1.100
7、SSH客户端不验证指纹
第一次连接远程服务器时:
The authenticity of host '11.1.1.100 (11.1.1.100)' can't be established. ECDSA key fingerprint is SHA256:Y/cQNWWkX15o2MsJ5HOQBI2m8S33qIA+x3zys8J4pOY. ECDSA key fingerprint is MD5:76:61:86:8b:d5:ee:bf:9c:60:e6:12:fa:f6:f0:74:36. Are you sure you want to continue connecting (yes/no)?yes Warning: Permanently added '11.1.1.100' (ECDSA) to the list of known hosts.
如果我们不想验证指纹,可以通过更改SSH客户端的配置文件
JumpServer:
# vim /etc/ssh/ssh_config 35行 StrictHostKeyChecking no
8、用专业工具pwgen生成用户密码
在实际生产环境中,其用户密码一定不要手工设置,建议使用专业的密码生成工具如pwgen。
① 安装随机密码生成工具pwgen
② 使用pwgen工具生成随机密码
③ 给账号code设置密码
第一步:创建code开发者账号
# useradd code
第二步:配置EPEL源,安装pwgen工具
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # yum clean all # yum makecache
第三步:安装pwgen密码生成工具
# yum install pwgen -y
第四步:使用pwgen生成随机密码
# pwgen -cnBs1 10 1
扩展:pwgen密码生成器的使用
# pwgen --help # 用法: pwgen 选项参数 长度 生成个数 Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ] # 密码中至少包含一个大写字母 -c or –capitalize # 密码中不包含大写字母 -A or –no-capitalize # 密码中至少包含一个数字 -n or –numerals # 密码中不包含数字 -0 or –no-numerals # 密码中至少包含一个特殊符号 -y or –symbols # 生成完全随机密码 -s or –secure # 密码中不包含歧义字符(例如1,l,O,0) -B or –ambiguous # 使用SHA1 hash给定的文件作为一个随机种子 -H or –sha1=path/to/file[#seed] # 在列中打印生成的密码 -C # 不要在列中打印生成的密码,即一行一个密码 -1 # 不要使用任何元音,以避免偶然的脏话 -v or –no-vowels
三、SSH服务补充
1、scp命令
主要功能:用于Linux系统与Linux系统之间进行文件的传输(上传、下载)
上传:
# scp [选项] 本地文件路径 远程用户名@远程服务器的IP地址:远程文件存储路径 -r : 递归上传,主要针对文件夹 -P : 更换了SSH服务的默认端口必须使用-P选项
下载:
# scp [选项] 远程用户名@远程服务器的IP地址:远程文件路径 本地文件存储路径 -r : 递归上传,主要针对文件夹 -P : 更换了SSH服务的默认端口必须使用-P选项
2、踢出用户
# 查看当前在线用户 w # 踢出某个账号 pkill -kill -t pts/1
四、SSH免密登录解决方案
1、为什么需要免密登录
2、SSH认证原理(基于用户名密码+基于密钥对)
① 回顾基于用户名密码的认证方式
② 基于密钥对(公钥与私钥)的认证方式 => 免密登录
A主机 => JumpServer,B主机 => RealServer
第一步:在A主机(JumpServer)生成一个密钥对(公钥和私钥)
第二步:把A主机的公钥通过网络拷贝到B主机(RealServer)上,然后把其内容追加到B主机的~/.ssh/authorized_keys
第三步:由A主机(JumpServer)向B主机(RealServer)发起登录请求,然后直接在B主机上进行公钥比对(判断A主机的公钥是否已经存储在B主机的authorized_keys文件中),如果存在且正确,则生成一个随机的字符串(如itcast),然后使用A主机的公钥对其加密得到加密的后字符串(如dXdh,34njasz!z.)
第四步:通过网络,由B主机讲刚才生成的加密后的字符串传输给主机A,主机A接收到加密后的字符串以后,使用自己本地存储的私钥进行解密操作(得到itcast)
第五步:把解密得到的itcast发送到B主机,然后验证与刚才生成的字符串是否一致,如果一致,返回登录成功。反之,则返回登录失败。
到此免密登录全部完成!
3、SSH免密登录的具体实现
SSH免密的实现思路一共分为三个步骤(三步走)
第一步:在A主机针对某个账号(tom或jerry)生成公钥与私钥
第二步:使用某些方法把公钥发送到B主机中,然后追加到authorized_keys文件中
第三步:测试是否实现免密登录
☆ 方法一:比较常用(tom)
① 在A主机针对某个账号生成公钥与私钥
# ssh-keygen
注:如果不想一路确认,可以在ssh-keygen -P "",直接生成公私钥
② 使用ssh-copy-id把公钥文件中的内容传输到服务器端的~/.ssh/authorized_keys文件中
# ssh-copy-id -p 3712 code@11.1.1.100 code@11.1.1.100's password:123456
③ 在JumpServer客户端测试免密登录是否成功
# ssh -p 3721 code@11.1.1.100
☆ 方法二:集群常用(jerry)
① 生成公钥与私钥
# ssh-keygen
② 把id_rsa.pub文件,scp到RealServer服务器端
# scp -P 3721 ~/.ssh/id_rsa.pub code@11.1.1.100:/home/code/
③ 在RealServer服务器端,把id_rsa.pub文件中的内容追加到~/.ssh/authorized_keys文件中
# cd ~ # cat id_rsa.pub >> ~/.ssh/authorized_keys
注意事项:以上配置也比较简单,但是实际应用时要注意文件的权限
RealServer: ~/.ssh : 700 ~/.ssh/authorized_keys : 600
④ 测试免密是否成功
# ssh -p 3721 code@11.1.1.100
相关文章:

远程管理SSH服务
一、搭建SSH服务 1、关闭防火墙与SELinux # 关闭firewalld防火墙 # 临时关闭 systemctl stop firewalld # 关闭开机自启动 systemctl disable firewalld # 关闭selinux # 临时关闭 setenforce 0 # 修改配置文件 永久关闭 vim /etc/selinux/config SELINUXdisabled 2、配置…...

Linux 实现原理 — NUMA 多核架构中的多线程调度开销与性能优化
前言 NOTE:本文中所指 “线程” 均为可执行调度单元 Kernel Thread。 NUMA 体系结构 NUMA(Non-Uniform Memory Access,非一致性存储器访问)的设计理念是将 CPU 和 Main Memory 进行分区自治(Local NUMA node&#x…...
Oracle锁处理
背景: 随着数据库版本不断迭代更新, v$session 视图的内容越来越丰富,可以直接使用blocking_session、blocking_instance、final_blocking_instance和final_blocking_session字段进行定位。对于锁层次的排查可以重复查询v$session来确定&am…...

持续集成交付CICD:安装Jenkins Slave(从节点)
目录 一、实验 1.安装Jenkins Slave(从节点) 二、问题 1.salve节点启动jenkins报错 2.终止命令行后jenkins从节点状态不在线 一、实验 1.安装Jenkins Slave(从节点) (1)查看jenkins版本 Version 2.…...

Dart(一):Dart入门
Dart入门 Dart安装创建项目安装依赖(以http为例)依赖库查询地址添加依赖编写运行示例 dart常用命令引用核心库、自定义库、第三方库数据类型Numbers (int, double)Strings (String)Booleans (bool)Lists (List)Maps (Map)Sets (Set)Null (null)Records (…...

[动态规划] (十一) 简单多状态 LeetCode 面试题17.16.按摩师 和 198.打家劫舍
[动态规划] (十一) 简单多状态: LeetCode 面试题17.16.按摩师 和 198.打家劫舍 文章目录 [动态规划] (十一) 简单多状态: LeetCode 面试题17.16.按摩师 和 198.打家劫舍题目分析题目解析状态表示状态转移方程初始化和填表顺序 代码实现按摩师打家劫舍 总结 注:本题与…...

【EI会议投稿】第三届计算机、人工智能与控制工程国际学术会议 (CAICE 2024)
The 3rd International Conference on Computer, Artificial Intelligence and Control Engineering (CAICE 2024) 第三届计算机、人工智能与控制工程国际学术会议 第三届计算机、人工智能与控制工程国际学术会议(CAICE 2024)将于2024年1月26-28日在西…...

python 之 列表推导式
文章目录 基本结构示例 1:将列表中的元素乘以 2 添加条件判断示例 2:筛选出偶数并加倍 嵌套列表推导式示例 3:生成九九乘法表 使用条件表达式示例 4:根据条件返回不同的值 镶嵌使用详细介绍基本结构示例生成二维数组多重筛选和操作…...
【左程云算法全讲2】链表、栈、队列、递归、哈希表和有序表
系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于左程云算法课程进行的,每个知识点的修正和深入主要参考…...

SQL第三次上机作业
1.查询与王利就读同一专业学生的借书证号和姓名 SELECT Lno,Rname FROM Reader WHERE Dept(SELECT DeptFROM ReaderWHERE Rname王利)2.查询比希望出版社出版的所有图书价格都高的图书信息 SELECT * FROM Book WHERE Price>(SELECT MAX(Price)FROM BookWHERE Press希望出版…...
前端事件案例补充
目录 定时器示例 搜索框示例 省市联动 定时器示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><meta name"viewport" content"widthdevice-width, init…...
3.8 Android eBPF HelloWorld调试(二)
写在前面 我们开发eBPF程序的初衷就是再不改动内核的情况下,将内核监控数据传递给到用户态;像应用进程开发一样开发内核监控程序。 Android开机的时候eBPF程序被加载器加载到内核中,但此时它并没有被附加到内核函数上去,也就是ebpf程序并不会执行,我们可以理解为,它仅仅被…...
xss如何快速提取cookies
<script>alert(111)</script> <img srcx onerroralert(document.cookie)>测试一下baidu的xss <script>alert(111)</script><img srcx οnerrοralert(document.cookie)>...
在 ASP.NET C# 中用Aspose.PDF将 PDF 页面转换为 JPG 图像
PDF 是一种通用格式,通常用于打印和共享文档。 (一)C# PDF to JPG Converter API - 免费下载 Aspose.PDF for .NET是一个强大的 PDF 操作 API,可让您在 .NET 应用程序中创建和处理 PDF 文件。此外,它还允许您将 PDF 文…...

Docker Compose安装milvus向量数据库单机版-milvus基本操作
目录 安装Ubuntu 22.04 LTS在power shell启动milvus容器安装docker desktop下载yaml文件启动milvus容器Milvus管理软件Attu python连接milvus配置下载wget示例导入必要的模块和类与Milvus数据库建立连接创建名为"hello_milvus"的Milvus数据表插入数据创建索引基于向量…...

极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队
引言 前端性能已成为网站和应用成功的关键要素之一。用户期望快速加载的页面和流畅的交互,而前端框架的选择对于实现这些目标至关重要。然而,传统的前端框架在某些情况下可能面临性能挑战且存在技术壁垒。 在这个充满挑战的背景下,我们引入…...
ES6~ES13新特性(二)
文章目录 一、ES71.Array Includes2.指数exponentiation运算符 二、ES81.Object values2.Object entries3.String Padding4.Trailing Commas5.Object Descriptors 三、ES9四、ES101.flat flatMap2.Object fromEntries3.trimStart、trimEnd4.其他知识点 五、ES111.BigInt2.Nulli…...

soildwork2022怎么样添加螺纹孔?
1.退出草图模式,点击需要添加螺纹孔的物体面,选中“特征”中的“异形孔向导” 2.选中“孔类型”为“直螺纹孔”,“标准”,“类型”,“孔规格”终止条件等。 3.设置完之后选择“位置” 4.鼠标左键在物体面上点一下&…...

【t5 pytorch版源码学习】t5-pegasus-pytorch源码学习
0. 项目来源 中文生成式预训练模型,以mT5为基础架构和初始权重,通过类似PEGASUS的方式进行预训练。 bert4keras版:t5-pegasus pytorch版:t5-pegasus-pytorch 本次主要学习pytorch版的代码解读。 项目结构: train…...
【springboot】spring的Aop结合Redis实现对短信接口的限流
前言 场景: 为了限制短信验证码接口的访问次数,防止被刷,结合Aop和redis根据用户ip对用户限流 1.准备工作 首先我们创建一个 Spring Boot 工程,引入 Web 和 Redis 依赖,同时考虑到接口限流一般是通过注解来标记,而注解…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...