配置和保护SSH

使用SSH访问远程命令行

描述Secure Shell

SSH(Secure Shell) 是一种网络协议,用于在不安全的网络上安全地进行系统管理和数据传输。它最初由 Tatu Ylönen 于1995年设计,并成为保护网络服务免受攻击的标准。SSH提供了多种功能,包括远程登录、命令执行、文件传输和端口转发。

Secure Shell示例

使用root用户远程登录;

使用exit命令可以注销远程系统。

[root@hcss-ecs-huawei ~]# exit
logout
Connection to 1.94.13.218 closed.
[root@servera ~]#

 使用普通用户远程登录;

识别远程用户

w命令可以显示当前登录系统的用户列表。它还显示远程系统位置和用户运行的命令。

 

严格的主机密钥检查

StrictHostKeyChecking参数在用户特定的~/.ssh/config文件或系统范围内的/etc/ssh/sshd_config文件中设置。或者通过指定ssh命令的-o StrictHostKeyChecking=选项来设置。

如果 StrictHostKeyChecking参数设置为yes,则ssh命令会在公钥不匹配的情况下始终中断SSH连接。

如果 StrictHostKeyChecking参数设置为no,则ssh命令将启用连接并将目标主机的密钥添加到~/.ssh/known_hosts文件。

SSH已知主机密钥管理

有关已知远程系统及其密钥的信息存储在以下任一位置:

  • 系统范围的/etc/ssh/ssh_known_hosts文件;
  • 每个用户的主目录中的~/.ssh/known_hosts文件。
[root@servera ~]# cat ~/.ssh/known_hosts
1.94.13.218 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIVQneajIfzXxzxwfgHPFu+rixWH7ll/Oxl3N7UMyuan
1.94.13.218 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLyCtDY9KkbQ/t5jwp63LyYHY9CptamUFV2pTlQQh2Geu7
HrMMQ7aDBv5mLCaHazxu15Ka3rBuykP77qy7po2ko=

每个已知主机密钥条目包含一行,其中有三个字段:

  • 第一个字段是共享该公钥的主机名和IP地址的列表;
  • 第二个字段是公钥的加密算法;
  • 最后一个字段是公钥本身。

主机密钥问题故障排除

如果远程系统的IP地址或公钥发生更改,并且您尝试再次通过SSH连接该系统,则SSH客户端会检测到~/.ssh/known_hosts文件中用于该系统的密钥条目不再有效。系统会显示一条警告消息,指出远程主机表示已更改,您必须修改密钥条目。

解决办法:

如果是从Windows终端使用xshell或其他远程工具连接Linux服务器,请按照以下路径找到.ssh文件夹C:\Users\\.ssh,将known_hosts中的主机旧条目删除。

如果是Linux客户端登录Linux服务器出现以上类似的情况,请使用ssh-keygen -R remotesystemname -f ~/.ssh/known_hosts进行操作。

配置基于SSH密钥的身份验证

SSH密钥生成

使用ssh-keygen命令创建一个密钥对。默认情况下,ssh-keygen命令将您的私钥和公钥保存在~/.ssh/id_rsa和~/.ssh/id_rsa.pub文件中。

使用ssh-keygen -t rsa -b 2048 命令在 Linux 中用于生成一个 2048 位的 RSA 密钥对。

 

ssh-keygen:这是一个用于创建新的认证密钥对的命令行工具。它是 OpenSSH 套件的一部分。

-t rsa:指定要生成的密钥类型为 RSA(Rivest-Shamir-Adleman)。RSA 是一种常见的公钥加密算法,广泛用于 SSH 和其他安全协议。

-b 2048:指定密钥长度为 2048 位。密钥长度越长,安全性越高,但计算复杂度也增加。2048 位是目前被认为安全且性能良好的常用长度。

可以选择向ssh-keygen提供密语,用于加密私钥。一旦设置了密语,则每次使用私钥时都必须输入密语。

 

ssh-keygen命令-f选项指定用于保存密钥的文件。

共享公钥

ssh-copy-id命令可将SSH密钥对的公钥复制到远程系统上。可以使用ssh-copy-id命令指定特定的公钥,或使用默认的~/.ssh/id_rsa.pub文件。

 

如果配置了密语来保护私钥,SSH将在第一次使用时请求密语。但是,如果密钥身份验证成功,则不会要求您输入帐户的密码。

SSH客户端配置

SSH 客户端配置文件位于 ~/.ssh/config。如果该文件不存在,可以创建它。

vim ~/.ssh/config

 在配置文件中,可以为不同的远程服务器添加不同的配置项。以下是一个示例配置:

Host myserverHostName 192.168.72.10User rootPort 22IdentityFile ~/.ssh/id_rsaStrictHostKeyChecking yesUserKnownHostsFile ~/.ssh/known_hosts

Host:给远程服务器起一个别名(例如 myserver),以后可以用这个别名来连接服务器。

HostName:远程服务器的 IP 地址或域名。

User:用于连接的用户名。

Port:SSH 服务监听的端口,默认为 22。

IdentityFile:私钥文件路径。

StrictHostKeyChecking:启用严格的主机密钥检查。

UserKnownHostsFile:指定已知主机文件的路径。

自定义OpenSSH服务配置

禁止超级用户进行登录

在生产环境中,一般不会以root用户身份进行远程登录,这样会有很大的安全风险。

OpenSSH服务器使用/etc/ssh/sshd_config文件中的PermitRootLogin配置设置,以允许或禁止用户以root身份登录系统。

PermitRootLogin  yes

当PermitRootLogin参数设置为yes时(默认设置),用户被允许以root用户身份登录系统。要防止这种情况,可将该值设置为no。

禁止将基于密码的身份验证用于SSH

为了提高 SSH 连接的安全性,可以禁用基于密码的身份验证,强制使用基于公钥的身份验证。这可以防止攻击者通过暴力破解密码来访问你的服务器。

打开 /etc/ssh/sshd_config 文件进行编辑:

vim /etc/ssh/sshd_config

找到以下配置项,并确保它们的值如下:

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

确保 PubkeyAuthentication 是启用的:

PubkeyAuthentication yes

保存并关闭文件后,重启 SSH 服务使配置生效:

 systemctl restart sshd

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

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

相关文章

基于SpringBoot+Vue的广场舞团系统(带1w+文档)

基于SpringBootVue的广场舞团系统(带1w文档) 基于SpringBootVue的广场舞团系统(带1w文档) 广场舞团,为用户随时随地查看广场舞团信息提供了便捷的方法,更重要的是大大的简化了管理员管理广场舞团信息的方式方法,更提供了其他想要了解广场舞团…

基于Trace的类型特化动态语言JIT编译

文章目录 Explain一、简介二、一个跟踪运行的示例三、跟踪树3.1 Traces类型特化(Type specialization) 3.2 Trace Trees3.3 黑名单(Blacklisting) 四、嵌套跟踪树4.1 Nesting Algorithm4.2 Blacklisting with Nesting 五、跟踪树优…

【Pytorch】一文向您详细介绍 torch.randn_like()

🎉🔥【Pytorch】一文向您详细介绍 torch.randn_like() 🔥🎉 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 …

滑动窗口题目

题目描述&#xff1a; 计算两个字符串str1和str2在给定的含有n个元素的字符串数组strs中出现的最短距离。 详细解释&#xff1a; 定义整数变量n&#xff0c;用于存储字符串数组strs的长度。定义一个vector<string>类型的变量strs&#xff0c;用于存储输入的字符串。定义…

破解反爬虫策略 /_guard/auto.js(一) 原理

背景 当用代码或者postman访问一个网站的时候&#xff0c;访问他的任何地址都会返回<script src"/_guard/auto.js"></script>&#xff0c;但是从浏览器中访问显示的页面是正常的&#xff0c;这种就是网站做了反爬虫策略。本文就是带大家来破解这种策略&…

4.3 最小二乘近似

一、最小二乘解 A x b A\boldsymbol x\boldsymbol b Axb 经常无解&#xff0c;一般是因为方程太多了。矩阵 A A A 的行比列要多&#xff0c;即方程要多余未知数&#xff08; m > n m>n m>n&#xff09;。 n n n 个列只能张成 m m m 空间的一小部分&#xff0c;除非…

面向铁路、地铁旅客信息系统(PIS)的上架型整机,铁路专用M12网络接口,满足欧洲铁路应用标准

上架型整机 2U 19寸上架型整机&#xff0c;采用高性能低功耗处理器&#xff0c;能应用在宽温环境下&#xff0c;并满足欧洲铁路应用标准EN50155关于电磁兼容性&#xff0c;冲击和振动测试试验的要求&#xff0c;是一款面向铁路、地铁旅客信息系统&#xff08;PIS&#xff09;的…

C# 关于 PaddleOCRSharp OCR识别的疲劳测试

目录 关于 PaddleOCRSharp 应用范例演示 ​范例运行环境 疲劳测试 添加组件库 方法设计 调用示例 小结 关于 PaddleOCRSharp PaddleOCRSharp 是百度飞桨封装的.NET版本 OCR dll 类库&#xff0c;OCR&#xff08;Optical Character Recognition&#xff09;工具可以将…

【Java面向对象】抽象类和接口

文章目录 1.抽象类2.常见的抽象类2.1 Number类2.2 Calendar 和GregorianCalendar 3.接口4.常见接口4.1 Comparable 接口4.2 Cloneable 接口4.3 深浅拷贝 5.类的设计原则 1.抽象类 在继承的层次结构中&#xff0c;每个新的子类都使类变得更加明确和具体。如果从一个子类向父类追…

Unty 崩溃问题(Burst 1.8.2)

错误代码&#xff1a; Assertion failed on expression: exception SCRIPTING_NULL UnityEngine.StackTraceUtility:ExtractStackTrace () Unity.Burst.BurstCompiler:SendRawCommandToCompiler (string Unity版本&#xff1a;2021.3.17F1&#xff0c;Burst 1.8.2 表现&…

python安装talib库教程

【talib介绍】 Talib介绍 Talib&#xff0c;全称“Technical Analysis Library”&#xff0c;即技术分析库&#xff0c;是一个广泛应用于金融量化领域的Python库。该库由C语言编写&#xff0c;支持Python调用&#xff0c;为投资者、交易员和数据分析师提供了强大的技术分析工…

酷炫末世意境背景404单页HTML源码

源码介绍 酷炫末世意境背景404单页HTML源码&#xff0c;背景充满着破坏一切的意境&#xff0c;彷佛末世的到来&#xff0c;可以做网站错误页或者丢失页面&#xff0c;将下面的代码放到空白的HTML里面&#xff0c;然后上传到服务器里面&#xff0c;设置好重定向即可 效果预览 …

论文学习——基于自适应选择的动态多目标进化优化有效响应策略

论文题目&#xff1a;Effective response strategies based on adaptive selection for dynamic multi-objective evolutionary optimization 基于自适应选择的动态多目标进化优化有效响应策略&#xff08;Xiaoli Li a,b,c, Anran Cao a,∗, Kang Wang a&#xff09;Applied S…

零基础STM32单片机编程入门(十五) DHT11温湿度传感器模块实战含源码

文章目录 一.概要二.DHT11主要性能参数三.DHT11温度传感器内部框图四.DTH11模块原理图五.DHT11模块跟单片机板子接线和通讯时序1.单片机跟DHT11模块连接示意图2.单片机跟DHT11模块通讯流程与时序 六.STM32单片机DHT11温度传感器实验七.CubeMX工程源代码下载八.小结 一.概要 DH…

App Inventor 2 天气预报App开发 - 第三方API接入的通用方法(2)

本文来自AppInventor2中文网&#xff08;www.fun123.cn&#xff09;参考文档&#xff0c;调用第三方天气接口获取天气JSON数据&#xff0c;解析并展示在App上。 App效果图&#xff0c;展示未来7日的天气预报&#xff0c;包括日期、天气图示和温度&#xff1a; App原理介绍 通…

Linux/Windows 系统分区

1. Windows 系统 1.1 系统分区 系统分区也叫做磁盘分区&#xff0c;即分盘&#xff1b; 举个例子&#xff0c;好比家里有一个大柜子&#xff0c;把衣服&#xff0c;鞋子&#xff0c;袜子都放在里面&#xff0c;由于没有隔断&#xff0c;找的时候非常麻烦&#xff0c;找是能找…

借力Jersey,铸就卓越RESTful API体验

目录 maven 创建 jersey 项目 运行 支持返回 json 数据对象 1. 引言 在当今数字化时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为连接不同软件系统和服务的桥梁。RESTful API以其简洁、轻量级和易于理解的特点&#xff0c;成为了API设计的首选标准。本…

Windows双网卡上网原理以及配置方法

目录 1. 背景 2. IP路由原理 3. windows双网卡上网解决方案 3.1. 基础配置解决方案 3.2. 高阶配置解决方案 1. 背景 在windwos上使用多网卡在工作和生活中是一个常见的操作&#xff0c;比如为了获取内部消息将有线连接到内部局域网中&#xff0c;为而了访问外网又将电脑的…

华为云GaussDB部署指南:主备架构的常见问题与解决方案

文章目录 华为云GaussDB部署指南&#xff1a;主备架构的常见问题与解决方案背景介绍部署步骤1.修改主机名2.软件安装检查3.禁用交换内存4.创建数据目录并挂载5.配置NTP时钟同步6.添加资源限制参数7.修改网卡的MTU8.上传安装工具包9.编辑集群配置文件10.修改集群安装模板11.安装…

木舟0基础学习Java的第二十天(线程,实现,匿名有名,休眠,守护,加入,设计,计时器,通信)

多线程 并发执行的技术 并发和并行 并发&#xff1a;同一时间 有多个指令 在单个CPU上 交替执行 并行&#xff1a;同一时间 有多个指令 在多个CPU上 执行 进程和线程 进程&#xff1a;独立运行 任何进程 都可以同其他进程一起 并发执行 线程&#xff1a;是进程中的单个顺…