4 - Linux远程访问及控制
目录
一、SSH远程管理
1. SSH概述
2.SSH的优点
3.配置OpenSSH客户端
4.sshd服务支持的两种验证方式
5. 使用SSH客户端程序
5.1 ssh - 远程登录
5.2 scp - 远程复制
6.配置密钥对验证
二、TCP Wrappers访问控制
1.TCP Wrappers 概述
2. TCP Wrappers 机制的基本原则
三、对称密钥与非对称密钥
1.对称密钥(Symmetric Key)
2.非对称密钥(Asymmetric Key)
四、在终端中使用私钥文件登录服务器
一、SSH远程管理
1. SSH概述
SSH(Secure Shell)协议
- SSH是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。
- SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登陆时输入的口令。
OpenSSH
OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。
- 服务名称:sshd
- 默认端口号:22
- 服务端主程序:/usr/sbin/sshd
- 服务端配置文件:/etc/ssh/sshd_config
- 客户端配置文件:/etc/ssh/ssh_config
2.SSH的优点
- SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议
- 利用SSH协议可以有效防止远程管理过程中的信息泄露问题
- SSH最初是Unix系统中的一个程序,后来又迅速扩展到其他操作平台
- SSH在正确使用时可弥补网络中的漏洞
- 数据传输的过程是加密的,具有安全稳定的特点
- 数据传输的方式是压缩的,可以提高传输速度
3.配置OpenSSH客户端
- shd_config配置文件的常用选项设置
vi /etc/ssh/sshd_config......
Port 22 #监听端口为 22
ListenAddress 0.0.0.0 #监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
LoginGraceTime 2m #登录验证时间为 2 分钟
PermitRootLogin no #禁止 root 用户登录
MaxAuthTries 6 #最大重试次数为 6PermitEmptyPasswords no #禁止空密码用户登录
UseDNS no #禁用 DNS 反向解析,以提高服务器的响应速度AllowUsers zhangsan lisi wangwu@61.23.24.25
#只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为61.23.24.25的主机远程登录DenyUsers zhangsan
#禁止某些用户登录,用法于AllowUsers类似(注意不要同时使用)
4.sshd服务支持的两种验证方式
密码验证
- 对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
密钥对验证
- 有球提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密\解密关联验证。能够增强安全性,且可以免交互登录
5. 使用SSH客户端程序
5.1 ssh - 远程登录
ssh "选项" "用户名"@"ip\名称"
例: ssh -p 1022 zhangsan@20.0.0.13
# "-p"指定端口号
5.2 scp - 远程复制
- 下行复制:
scp "用户名"@"ip/名称":"被复制的远程主机文件路径" "复制到的本机文件路径"
例:scp root@20.0.0.13:/etc/passwd /root/passwd10.txt
- 上行复制:
scp "被复制的本机文件路径" "用户名"@"ip\名称":"复制到的远程主机文件路径"
例:scp /root/passwd root@20.0.0.13:/etc/passwd10.txt
- "-r"选项:递归复制目录
- "-P"选项:指定端口号
6.配置密钥对验证
1.在客户端使用ssh-keygen工具创建密钥对文件(可用的加密算法为RSA、ECDSA、DSA等)
ssh-kegen -t rsa
#"-t"选项:指定加密算法类型
[root@wzx ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #指定私钥位置(回车默认)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): #设置私钥密码(回车默认)
Enter same passphrase again: #确认输入(回车默认)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:GqXMgBqBoMByselDeDiNraMgVv17fJrXb7FQ0NHGl5o root@wzx
The key's randomart image is:
+---[RSA 2048]----+
|B .. .o+|
|=O.+. . o=|
|O.O... . +..|
| O. +.o E . |
|*.o =.S . |
|=. . oo . . |
|. .. o .. . o|
| . +. . o |
| o. o. |
+----[SHA256]-----+
- 生成的私钥、公钥文件默认存放在宿主目录中的隐藏目录.ssh/下
2.将公钥文件上传至服务器
ssh-copy-id root@20.0.0.12
"-i"选项:指定密钥文件
[root@wzx ssh]# ssh-copy-id root@20.0.0.12
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '20.0.0.12 (20.0.0.12)' can't be established.
ECDSA key fingerprint is SHA256:1R40yTT7DYnXgxAb8W4TabvlPcU9038lLVjDrQqnpnA.
ECDSA key fingerprint is MD5:03:ae:25:33:8f:08:48:80:85:d4:3a:73:f2:49:83:a4.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@20.0.0.12's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@20.0.0.12'"
and check to make sure that only the key(s) you wanted were added.
3.使用密钥对验证登录
ssh root@20.0.0.12
[root@wzx ssh]# ssh root@20.0.0.12
Last login: Mon Aug 19 23:47:41 2024 from 20.0.0.1
二、TCP Wrappers访问控制
1.TCP Wrappers 概述
- TCP Wrapper 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
- 对应的两个策略文件为:/etc/hosts.allow 和 /etc/hosts.deny ,分别用来设置允许和拒绝的策略。
格式:
"服务程序列表":"客户端地址列表"
(1) 服务程序列表:
- ALL:代表所有的服务
- 单个服务程序:如"vsftpd"
- 多个服务程序组成的列表:如"vsftpd.sshd"
(2) 客户端地址列表:
- ALL:代表任何客户端地址
- LOCAL:代表本机地址
- 多个地址以逗号分隔
- 允许使用通配符"*"、"?",
- 网段地址,如 192.168.20. 或 192.168.20.0/255.255.255.0
- 区域地址,如".benet.com"
2. TCP Wrappers 机制的基本原则
首先检查/etc/hosts.allow(白名单)文件,如果找到相匹配的策略,则允许访问;
否则继续检查/etc/hosts.deny(黑名单)文件,如果找到相匹配的策略,则拒绝访问;
如果检查上述两个文件都找不到相匹配的策略,则运行访问。
- 允许所有,拒绝个别:
只需在/etc/hosts.deny文件中添加相应的拒绝策略
- 允许个别,拒绝所有:
除了在/etc/hosts.allow中添加允许策略之外,还需要再/etc/hosts.deny文件中设置"ALL:ALL"的拒绝策略。
三、对称密钥与非对称密钥
1.对称密钥(Symmetric Key)
对称密钥加密,又称为私钥加密或会话密钥加密算法,是一种加密和解密使用相同密钥或可以相互推算的密钥对的加密方式。
优点:
- 加解密速度快,适合处理大量数据
缺点:
- 密钥管理困难,泄露风险大
2.非对称密钥(Asymmetric Key)
非对称密钥加密,又称为公钥密钥加密,它需要使用一对密钥来分别完成加密和解密操作。这对密钥包括一个公钥和一个私钥,公钥可以公开发布,而私钥则由用户自己秘密保存。
优点:
- 泄露风险低
缺点:
- 加解密速度慢
四、在终端中使用私钥文件登录服务器
1.在服务端中生成密钥
[root@wzx ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xfbf6ZBU+BSvX7kPn4Pyu//Ug5kvOiZI2m6Bndv77Qg root@wzx
The key's randomart image is:
+---[RSA 2048]----+
| . |
| . . o|
| + . o.|
| o . +..|
| o S ...o.|
| . = ..=o=|
| + =E *++=|
| . = o.+oo+=+|
| o. .=+**==*|
+----[SHA256]-----+
2.将id_rsa私钥文件导出到客户端(可使用ftp工具等)
3.找到公钥文件并追加到authorized_keys文件内
[root@wzx ~]# cd .ssh
[root@wzx .ssh]# ls
id_rsa id_rsa.pub
[root@wzx .ssh]# cat id_rsa.pub >> authorized_keys
[root@wzx .ssh]# ls
authorized_keys id_rsa id_rsa.pub
[root@wzx .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6bCV0EHdsXSD83CG4iNl81D1vDLiuywSsbj+3ANQOK4qRWNPOHfOIBXGANZQsT+33CrJY4ZvFnvcIeWpS+/fYyFnTekHPzuOROzcZYfkBxm1SB7YM5pLnHr8YdyUCOaYUhLYBuBixm80l1QvVOPnNRkKgzcOsOQSpOihGXgAa2d7lbOnr8UOO/aJ/6FQ2xxcCEcP9sG3h/uvCi7BP430XQPmfVksRm/tR+8sPNJNzioXgIoh5Sc6Rqp2C1IC3Krx3um4FCyqJJZJ6I7uY74g+L/Nt7IT3qTr13zVVjEAktNV0zMvdxRTNnIzEWTrhwEDASzJs3ewDjv1FESGErHTH root@wzx
4.配置sshd_config文件
ot@wzx .ssh]# vim /etc/ssh/sshd_config ......
PubkeyAuthentication yes #启用公钥验证
......[root@wzx .ssh]# systemctl restart sshd #重启刷新配置
5.在终端中设置私钥登录
6.登录
成功登录且不用输入密码
相关文章:

4 - Linux远程访问及控制
目录 一、SSH远程管理 1. SSH概述 2.SSH的优点 3.配置OpenSSH客户端 4.sshd服务支持的两种验证方式 5. 使用SSH客户端程序 5.1 ssh - 远程登录 5.2 scp - 远程复制 6.配置密钥对验证 二、TCP Wrappers访问控制 1.TCP Wrappers 概述 2. TCP Wrappers 机制的基本原则 …...

如何使用AWS EC2资源?
随着云计算技术的迅速发展,越来越多的企业和个人选择将工作负载迁移到云端,以获取灵活性、可扩展性和成本效益。作为全球领先的云计算服务提供商,AWS为用户提供了丰富的服务,其中最受欢迎的之一是云服务器EC2。本文中九河云将探讨…...

Linux高编-进程的概念(1)
目录 1.ps aux 2.top 3.kill -2 进程pid // fork函数 getpid拿自己的进程号 getppid拿父进程号 fork()&&fork()||fork() 父子进程的关系: 僵尸进程,孤儿进程 僵…...
go语言中new和make的区别
在 Go 语言中,new 函数不能用来创建通道(chan),这是因为 new 只分配内存并返回指向该内存的指针,而不负责初始化内存。 为什么不能使用 new 来创建通道? new 只能分配内存,但不会对内存进行初…...

SpringBoot响应式编程(3)R2DBC
一、概述 1.1简介 R2DBC基于Reactive Streams反应流规范,它是一个开放的规范,为驱动程序供应商和使用方提供接口(r2dbc-spi),与JDBC的阻塞特性不同,它提供了完全反应式的非阻塞API与关系型数据库交互。 …...
什么是私有继承
私有,公有,针对类而言; 私有( private )的成员,自己的,只能在自己内部( 类的定义体内部 )访问,外部( 类的定义体外部 )不能访问/调用; 公有( 或者说公开,public )的成员࿰…...
Scratch编程:开启智能硬件控制的大门
标题:“Scratch编程:开启智能硬件控制的大门” 在当今数字化时代,编程不仅仅是与计算机的交互,更是与物理世界的连接。Scratch,这款由麻省理工学院媒体实验室开发的视觉化编程语言,以其易学易用的特性&…...
机器学习第十二章-计算学习理论
目录 12.1基础知识 12.2 PAC学习 12.3有限假设空间 12.3.1可分情形 12.3.2不可分情形 12.4VC维 12.5 Rademacher复杂度 12.1基础知识 计算学习理论研究的是关于通过"计算"来进行"学习"的理论,即关于机器学习的理论基础,其目的…...
Java-自定义注解操作日志记录处理(@Pointcut注解不是必须的)
在Java中,使用自定义注解结合Spring AOP来实现操作日志记录是一种常见的做法。这种方式可 以帮助你轻松地在不修改业务代码的情况下增加日志记录的功能。 下面我将详细介绍如何定义一个自定义注解,并结合Spring AOP来实现操作日志记录的功能。 1. 定义自定义注解 首先,我…...

【c++】深入理解别名机制--引用
🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:C 目录 前言 一、引用的概念和定义 二、引用的特性 三、引用的实用性 1.引用传参 2.引用做返回值 2.1 引用做返回值的作用 2.2 引用坍缩问题、悬挂引用问…...
简便的qemu img扩容方法
虚拟机用着用着磁盘空间就不够了,那就要想办法增加磁盘空间大小 了。在虚拟机本身磁盘的基础上直接增加空间大小最简便,于是记录一下方法。 首先,在虚拟机关机状态下,使用qemu-img命令给虚拟机的磁盘镜像增加虚拟空间5GBÿ…...
EPERM: operation not permitted,
这个错误提示 EPERM: operation not permitted, mkdir C:\Program Files\nodejs\node_global\node_modules\pnpm_tmp 通常是因为权限不足导致的。在 Windows 系统中,C:\Program Files\ 目录通常需要管理员权限才能写入。 要解决这个问题,你可以尝试以下…...

将Centos 8 Linux内核版本升级或降级到指定版本
本文以centos 8.0为例,内核版本为4.18.0-80.el8.x86_64,升级到内核版本为4.18.0-80.4.2.el8_0.x86_64。 1.查看当前系统版本信息 [rootcentos80-1905 ~]# uname -sr Linux 4.18.0-80.el8.x86_642.在网站:https://vault.centos.org/里面下载…...

小程序商城被盗刷,使用SCDN安全加速有用吗?
在电子商务蓬勃发展的今天,小程序商城因其便捷性和灵活性成为商家和消费者的新宠。然而,随着其普及,小程序商城的安全问题也日益凸显,尤其是盗刷现象频发,给商家和用户带来了巨大损失。面对这一挑战,是否可…...

nginx的基本使用与其日志
文章目录 1.nginx编译安装脚本2.nginx平滑升级,以及其步骤3.nginx核心配置,及实现nginx多虚拟主机4.nginx日志格式定制5.nginx反向代理及https安全加密6.基于LNMP和Redis的phpmyadmin的会话保持,以及其完整步骤 1.nginx编译安装脚本 #编译安…...

linux | 苹果OpenCL(提高应用软件如游戏、娱乐以及科研和医疗软件的运行速度和响应)
点击上方"蓝字"关注我们 01、引言 >>> OpenCL 1.0 于 2008 年 11 月发布。 OpenCL 是为个人电脑、服务器、移动设备以及嵌入式设备的多核系统提供并行编程开发的底层 API。OpenCL 的编程语言类似于 C 语言。其可以用于包含 CPU、GPU 以及来自主流制造商如 …...
算法-UKF中Sigma点生成
void UKF::MakeSigmaPoints() {Eigen::VectorXd x_aug_ Eigen::VectorXd(n_x_);x_aug_.head(n_x_) x_;Eigen::MatrixXd P_aug Eigen::MatrixXd::Zero(n_x_, n_x_);// 转成正定矩阵P_aug pdefinite_svd(P_);// LLT分解Eigen::MatrixXd L P_aug.llt().matrixL();sigma_point…...

精选五款热门骨传导耳机分享,让你避免踩坑的陷阱
因为骨传导耳机独特的佩戴方式和声音的传播方式,受到了小耳、油耳以及运动爱好者的的喜爱,但也由于市面上的骨传导耳机品牌越来越多,很多朋友不知道该怎么选择,今天我挑选出市面上体验感较好,各方面比较出色的骨传导给…...

「字符串」前缀函数|KMP匹配:规范化next数组 / LeetCode 28(C++)
概述 为什么大家总觉得KMP难?难的根本就不是这个算法本身。 在互联网上你可以见到八十种KMP算法的next数组定义和模式串回滚策略,把一切都懂得特别混乱。很多时候初学者的难点根本不在于这个算法本身,而是它令人痛苦的百花齐放的定义。 有…...

python人工智能002:jupyter基本使用
小知识:将jupyter修改为中文,修改用户变量, 注意是用户变量,不是系统变量 新增用户变量 变量名:LANG 变量值:zh_CN.UTF8 然后重启jupyter 上一章的软件安装完成之后,就可以创建文件夹来学习写…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...