配置和保护SSH

news2024/11/15 4:38:31

使用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 myserver
    HostName 192.168.72.10
    User root
    Port 22
    IdentityFile ~/.ssh/id_rsa
    StrictHostKeyChecking yes
    UserKnownHostsFile ~/.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.coloradmin.cn/o/1932290.html

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

相关文章

prometheus+grafana应用监控配置

配置Prometheus 官方地址:Download | Prometheus (wegt下载压缩包,解压并重命名prometheus,文件放于/data/prometheus即可) 配置 service方法(文件放于 /etc/systemd/system/prometheus.service): [Unit…

Windows与Ubuntu安装ffmpeg

文章目录 前言ffmpeg的简介安装ffmpegWindows下载设置环境变量 Ubuntu 总结 前言 FFmpeg是一款非常强大的开源音视频处理工具,它包含了众多的音视频编解码库,可以用于音视频的采集、编解码、转码、流化、过滤和播放等复杂的处理。在Windows系统上安装FF…

Talk|清华大学袁天远:PreSight - 利用NeRF先验帮助自动驾驶场景在线感知

本期为TechBeat人工智能社区第605期线上Talk。 北京时间7月3日(周三)20:00,清华大学博士生—袁天远的Talk已经准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “PreSight - 利用NeRF先验帮助自动驾驶场景在线感知”,他向大家介绍了新…

OBD诊断(ISO15031) 08服务

文章目录 功能简介ISO 9141-2、ISO 14230-4和SAE J1850的诊断服务定义1、请求控制车载设备请求消息(读取支持的TID)2、请求控制车载设备响应消息(报告支持的TID)3、请求控制车载设备请求消息(读取TID值)4、…

QTableView仿Excel表头排序和筛选

一.效果 Excel的排序和筛选弹窗如下所示 功能非常强大。不仅支持内容排序和筛选,还支持颜色的排序和筛选,而且还支持设置多种过滤条件。本文只仿最常用的内容排序和内容单过滤条件的筛选,效果如下所示。 从效果图中可以看出,表头Section中的按钮有下列六种状态 enum Butt…

自制OJ在线判题网站

项目效果啊演示: 项目链接: Gitee:Oj: 自定义实现的OJ在线做题网站,自主实现代码沙箱 (gitee.com) GitHub:GitHub - SakanaYdy/Oj 仓库中含有完整的项目流程PDF文档,可以参考自定义OJ网站。 目前只支持Java语言,可以…

【zabbix6监控java-tomcat全流程】

目录 一、监控主机安装zabbix-server1、zabbix的安装2、配置数据库3、为zabbix server配置数据库4、启动服务,web界面安装 二、被监控主机安装tomcat1、安装JDK2、安装tomcat 三、zabbix的服务端安装zabbix-java-gateway四、被监控主机tomcat的配置五、web界面添加主机 一、监控…

动态规划题目:单词拆分/三角形最小路径和 - leetcode

动态规划思想 / 步骤 : 先将 当前要求 总结成一个 精炼的 小问题 , 然后 将 求解题目 转换为 求解N个 小问题 , 每个小问题的 求解过程相同 ,但是 过程涉及 的 数据 是不同的 , 例如第三个 小问…

windows qt编译报错 无法打开包括文件: “EGL/egl.h”: No such file or directory

windows mingw32 qt creator QtAV 推荐ffmpeg依赖包 QT5.14.2 如果出现:无法打开包括文件: “EGL/egl.h”: No such file or directory 可能是Qt6的问题.在QT5上安装。 编译步骤: git clone https://github.com/wang-bin/QtAV.git cd QtAV &&…

ABAQUS应用10-Abaqus/Standard求解器定义接触时的有限滑移和小滑移

[toc] 0、背景 之前在做混塔参数化建模的过程中,Part之间的接触设置问题困扰过我很久。有一个老哥手动操作一遍以后发现需要定义小滑移接触。今天正好看见曹老师公众号讲解了这部分的设置,为防止丢失,收录在这里。同时欢迎大家关注曹老师公…

【Git学习 | 第2篇】在IDEA中使用Git

文章目录 在IDEA中使用Git1. IDEA中配置Git2. 获取Git仓库2.1 本地初始化仓库2.2 从远程仓库克隆 3. 本地仓库操作4. 远程仓库操作5. 分支操作 在IDEA中使用Git 1. IDEA中配置Git IDEA中使用Git,本质上使用的本地安装的Git软件配置步骤: 2. 获取Git仓库…

【Python与GUI开发】事件处理与打包分发

文章目录 前言 一、高级事件处理 1.自定义事件 2.拖放操作 3.复杂控件的事件处理 二、打包和分发 Tkinter 应用 1.PyInstaller 2.cx_Freeze 3.spec 文件 4.分发注意事项 三、实战示例:文件浏览器 总结 前言 在前面的讨论中,我们深入理解了 T…

Pikachu SQL注入训练实例

1 数字类型注入 打开Burp Suit工具,选择Proxy,之后点击Open Browser打开浏览器,在浏览器中输入http://localhost:8080/pikachu-master打开Pikachu漏洞练习平台。 选择“数字型注入”,之后点击下拉框随便选择一个ID,…

linux进程——父子进程层面的PID,fork的原理与理解

前言:本篇内容主要讲解进程中系统调用fork和父子进程的概念与原理, 想要系统学习linux进程的友友们只管看本篇文章是不行的。 还要学习一些linux进程的周边知识以及linux进程其他方面的知识,博主的linux专栏中已经加入了这些文章方便友友们进…

【Java数据结构】初始线性表之一:链表

为什么要有链表 上一节我们描述了顺序表:【Java数据结构】初识线性表之一:顺序表-CSDN博客 并且进行了简单模拟实现。通过源码知道,ArrayList底层使用数组来存储元素。 由于其底层是一段连续空间,当在ArrayList任意位置插入或者…

GESP CCF C++ 七级认证真题 2024年6月

第 1 题 下列C代码的输出结果是&#xff08; &#xff09;。 #include <iostream> #include <cmath> using namespace std; int main() { cout << sin(3.1415926 / 2); return 0; } A. 0 B. 1 C.0.5 D.0.7071 第 2 题 对于如下图的二叉树&#x…

「C++」类和对象(1)

欢迎来到海盗猫鸥的博客~~ 本篇我们将学习部分C中的类和对象相关知识沃~ (• ω •)&#xff89;算我一个&#xff5e; 目录 类的定义 类的定义及使用 访问限定符 类域 实例化 实例化概念&#xff1a; 对象大小&#xff1a; 内存对齐规则&#xff1a; 注意点&#xff…

卸载docker简单且ok的方法

杀死所有容器 docker kill $(docker ps -a -q) 删除所有容器 docker rm $(docker ps -a -q) 删除所有镜像 docker rmi $(docker images -q) 停止docker服务 systemctl stop docker 查看安装列表 yum list installed|grep docker 依次卸载已安装的docker yum -y remove docke…

入职前回顾一下git-01

git安装 Linux上安装git 在linux上建议用二进制的方式来安装git&#xff0c;可以使用发行版包含的基础软件包管理工具来安装。 红帽系 sudo yum install gitDebian系 sudo apt install gitWindows上安装git 去官网下载和操作系统位数相同的安装包.或者可以直接安装GitHub…

【C++】类和对象·this指针

C中的类与C语言中的结构体有很多的相似的地方&#xff0c;可以说本质上除了结构体只能定义成员变量&#xff0c;以及结构体默认的访问控制权限是public之外与class没啥区别。但是结构体变量每次调用函数的时候需要指针&#xff0c;而类中的成员函数明明被保存在公共代码段&…