远程管理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

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

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

相关文章

【深度学习】pytorch——Autograd

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 深度学习专栏链接: http://t.csdnimg.cn/dscW7 pytorch——Autograd Autograd简介requires_grad计算图没有梯度追踪的张量ensor.data 、tensor.detach()非叶子节点的梯度计算图特点总结 利用Autograd实…

Transformer:开源机器学习项目,上千种预训练模型 | 开源日报 No.66

huggingface/transformers Stars: 113.5k License: Apache-2.0 这个项目是一个名为 Transformers 的开源机器学习项目,它提供了数千种预训练模型,用于在文本、视觉和音频等不同领域执行任务。该项目主要功能包括: 文本处理:支持…

【Redis】hash数据类型-常用命令

文章目录 前置知识常用命令HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGET关于HMSETHLENHSETNXHINCRBYHINCRBYFLOAT 命令小结 前置知识 redis自身就是键值对结构了,哈希类型是指值本⾝⼜是⼀个键值对结构,形如key"key",value{{field1…

面向萌新的数学建模入门指南

时间飞逝,我的大一建模生涯也告一段落。感谢建模路上帮助过我的学长和学姐们,滴水之恩当涌泉相报,写下这篇感想,希望可以给学弟学妹们一丝启发,也就完成我的想法了。拙劣的文笔,也不知道写些啥,…

idea必装插件EditStarters(快速引入依赖)

前言 一般来说我们要向一个 servlet 或者 Spring 项目中引入依赖都需要先到中心仓库找到对应的依赖,选择依赖的版本,把依赖添加到配置文件 pom.xml 中,这其实还是有点麻烦的,而通过 EditStarters 插件我们可以迅速的添加依赖到项目…

ElasticSearch高级功能详解与原理剖析

ES数据预处理 Ingest Node Elasticsearch 5.0后,引入的一种新的节点类型。默认配置下,每个节点都是Ingest Node: 具有预处理数据的能力,可拦截lndex或Bulk API的请求对数据进行转换,并重新返回给Index或Bulk APl 无…

万宾科技管网水位监测助力智慧城市的排水系统

以往如果要了解城市地下排水管网的水位变化,需要依靠人工巡检或者排查的方式,这不仅加大了人员的工作量,而且也为市政府带来了更多的工作难题。比如人员监管监测不到位或无法远程监控等情况,都会降低市政府对排水管网的管理能力&a…

自动控制原理答案

题目 现有一个单位反馈系统的开环传递函数为 试对该系统进行以下分析。 1.基础分析 计算该系统的闭环传递函数。 2.稳定性分析 2.1 使用劳斯判据分析该系统的稳定性 2.2 使用MATLAB编程,计算该系统有关于稳定性分析的零、极点,分析其稳定性。 3.暂态性…

京东数据平台:2023年Q3季度黄金市场数据分析

继9月国内黄金市场持续上涨后,进入10月中下旬后,黄金行情再度反转,多家品牌金饰价格再次突破600元/克,达到611元/克。 今年以来,黄金行情不断走俏,销售市场也有明显增长。根据鲸参谋平台的数据显示&#xf…

最受欢迎的程序员副业排行榜TOP6

程序员接单的情况并不少见,因为程序员职业工种的特殊性,能够比较快的衔接上新项目和新技术,所以接私活做副业成了许多程序员的不二之选。 程序员的副业是指程序员在业余时间里从事与编程相关的兼职工作,或者是与技术相关的创业项…

goquery库编写程序

goquery库的爬虫程序,该程序使用Go来爬取视频。。 package main ​ import ("fmt""net/http""net/http/httputil""io/ioutil""log""strings""golang.org/x/net/proxy""golang.org/x/n…

ACWing.第 128 场周赛 (B、C题解)

B、5286. 翻倍(思维推导) 一、题目要求 给定两个正整数,初始时两数均为 1。 你可以进行任意次(也可以不进行)翻倍操作,每次操作任选一个非负整数 k,令两数中的一个数乘以 k,另一个…

响应式项目施工装饰工程企业网站模板源码带后台

模板信息: 模板编号:647 模板编码:UTF8 模板颜色:蓝色 模板分类:基建、施工、地产、物业 适合行业:建筑施工类企业 模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统&#xff…

python opencv 实现对二值化后的某一像素值做修改和mask叠加

实现对二值化后的某一像素值做修改 使用OpenCV的findNonZero函数找到所有非零(也就是像素值为255)的像素,然后遍历这些像素并修改他们的值。示例代码: import cv2 import numpy as np # 加载并二值化图像 img cv2.imread(…

使用 Python 进行自然语言处理第 4 部分:文本表示

一、说明 本文是在 2023 年 3 月为 WomenWhoCode 数据科学跟踪活动发表的系列文章中。早期的文章位于:第 1 部分(涵盖 NLP 简介)、第 2 部分(涵盖 NLTK 和 SpaCy 库)、第 2 部分(涵盖NLTK和SpaCy库&#xf…

产品经理日常工作流程汇总

产品经理在日常的团队工作过程中,承担着重要的衔接作用。由于工作性质的特殊性,产品经理日常工作内容特别繁杂,导致很多产品小白刚一上手,会无从下手,经常丢三落四。这时拥有一个好的工作流程,很大程度上就…

C语言 用字符串比较函数cmp来做一个门禁:账号密码是否匹配 (干货满满)

#include<stdio.h> #include<string.h> void fun04() {for (int i 0; i < 3; i){char *str01 "hello";char uname[100] ;printf("请输入账号");scanf("%s",uname);char *str02 "123456";char pword[100];printf(&qu…

Chromebook文件夹应用新功能

种种迹象表明 Google 旗下的 Chromebooks 近期要有大动作了。根据 Google 团队成员透露&#xff0c;公司计划在 Chrome OS 的资源管理器中新增“Recents”&#xff08;最近使用&#xff09;文件&#xff0c;以便于用户更快找到所需要的文件。 种种迹象表明 Google 旗下的 Chro…

【移远QuecPython】EC800M物联网开发板调用网络API(使用SIM卡联网并调用高德地图API的定位坐标转换)

【移远QuecPython】EC800M物联网开发板调用网络API&#xff08;使用SIM卡联网并调用高德地图API的定位坐标转换&#xff09; 高德API使用方法&#xff1a; 文章目录 API相关配置SIM卡联网网络操作API调用 高德地图API产品介绍适用场景使用限制使用说明坐标转换 附录&#xff…

【漏洞复现】Apache_HTTP_2.4.50_路径穿越漏洞(CVE-2021-42013)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证方式一 curl方式二 bp抓捕 1.5、修复建议 说明内容漏洞编号CVE-2021-42013漏洞名称…