RockyLinux 镜像源替换实战指南
掌握 ssh-keygen:揭秘公钥与私钥的工作原理与生成实践

掌握 ssh-keygen:揭秘公钥与私钥的工作原理与生成实践

在日常的软件开发和系统管理中,我们经常需要安全地连接到远程服务器、执行 Git 操作,或者进行其他需要身份认证的网络通信。传统的密码认证方式往往存在暴力破解和中间人攻击的风险,而基于SSH密钥认证的机制,则提供了一种更强大、更安全的解决方案。

SSH(Secure Shell)密钥对由公钥私钥组成。公钥可以公开,放置在远程服务器上;私钥则必须严格保密,存放在本地。当尝试连接时,SSH客户端会用私钥加密一段数据,服务器用对应的公钥解密验证,从而完成身份认证,无需传输敏感的密码。

本文将深入解析生成SSH密钥对的核心命令:ssh-keygen -t rsa -b 4096 -C "your_email@example.com",并指导你如何在实践中正确使用它。

阅读更多
Hyper-V虚拟机新增虚拟硬盘

Hyper-V虚拟机新增虚拟硬盘

笔者在使用Hyper-V虚拟机进行日常运维和环境搭建时,经常会遇到存储空间不足或需要独立数据盘的情况。近期,在为某个Kubernetes集群部署Rook-Ceph分布式存储解决方案时,就遇到了需要为虚拟机动态新增多个虚拟硬盘的需求。这个过程虽然看似简单,但对于初次接触或不熟悉Hyper-V操作的用户来说,每一步的细节都值得仔细推敲。因此,本文旨在详细记录从零开始为Hyper-V虚拟机添加虚拟硬盘的整个过程,并附上详细的图文步骤,希望能为遇到类似需求的朋友提供清晰直观的指引,帮助他们高效地扩展虚拟机存储能力。

阅读更多
WireGuard + frp 搭建安全高效的远程开发环境

WireGuard + frp 搭建安全高效的远程开发环境

作为一名开发者,你是否经常遇到这样的痛点:家里的开发测试环境(如虚拟机集群、NAS)资源丰富,但一旦离开家(比如去公司或出差),就无法访问这些宝贵的内网资源?本文将详细介绍如何利用现代 VPN 解决方案 WireGuard 和内网穿透工具 frp,搭建一个安全、高效、稳定的远程访问通道,让你随时随地都能连接到家庭或办公室的内部网络,如同身处局域网之中。

阅读更多
解决 Docker 容器网络问题:加载 ip_tables 和 iptable_nat 内核模块

解决 Docker 容器网络问题:加载 ip_tables 和 iptable_nat 内核模块

在使用 Docker 运行某些需要精细网络控制的容器(例如 VPN 服务器如 wg-easy,或者需要自定义防火墙规则的应用)时,你可能会遇到启动失败或网络功能异常的问题。有时,错误日志会隐晦地指向 iptables 相关操作失败。一个常见的解决方案是确保宿主机加载了必要的内核模块,特别是 ip_tablesiptable_nat

本文将解释这两个模块的作用,并指导你如何临时加载它们以快速解决问题,以及如何配置系统以在每次启动时永久加载它们。

阅读更多
Rocky Linux 8.10 内核升级实战:拥抱 Linux 6.1 LTS

Rocky Linux 8.10 内核升级实战:拥抱 Linux 6.1 LTS

Rocky Linux 8.x 系列作为一个稳定、可靠的企业级 Linux 发行版,默认搭载的内核版本通常是经过长期测试和验证的稳定版本(在 8.10 中通常是 4.18.x 系列)。然而,在某些场景下,我们可能需要更新的内核版本来获得:

  • 更好的硬件支持: 特别是对于较新的 CPU、GPU、网络适配器或存储设备。
  • 新功能和特性: 利用内核新版本带来的性能优化、安全增强或文件系统改进。
  • 特定的软件依赖: 某些应用程序或驱动程序可能需要特定或更新的内核版本。

Linux Kernel 6.1 是一个重要的 长期支持 (LTS) 版本,提供了许多改进和新特性,并且将获得较长时间的维护支持。本文将详细介绍如何在 Rocky Linux 8.10 系统上,使用广泛认可的第三方仓库 ELRepo,安全地将内核升级到 6.1 LTS 版本。

❗ 重要警告: 内核是操作系统的核心。升级内核涉及系统级别的更改,存在一定的风险,可能导致系统无法启动或出现不稳定。在执行任何操作之前,请务必:

  1. 备份您的重要数据!
  2. 如果可能,在非生产环境或虚拟机中进行测试。
  3. 确保您了解如何通过 GRUB 引导加载程序选择旧内核启动,以备不时之需。
阅读更多
利用Nginx实现高性能的前端打点采集服务(支持GET和POST)

利用Nginx实现高性能的前端打点采集服务(支持GET和POST)

在业务开发中,我们经常需要通过“数据驱动”做决策。前端页面中的各类打点事件产生大量请求,如何高效、稳定地进行数据采集,成为后端服务设计的重要课题。相比引入复杂的多语言服务,我们可以巧妙利用 Nginx 的轻量高性能特性,搭建一个具备 CORS 支持,既能处理 GET 请求,也能优雅接收 POST 请求体的打点采集服务,满足生产级的需求。

本文将结合实践,详细介绍如何通过配置 Nginx,解决 Nginx 默认不支持 POST 请求且无法记录 POST Body 的问题,设计支持跨域,日志格式友好,并能便于后续离线分析的打点收集服务。

阅读更多
Hyper-V安装Linux虚拟机并配置静态IP

Hyper-V安装Linux虚拟机并配置静态IP

本文主要介绍了如何在Hyper-V平台上安装红帽系列Linux虚拟机,并配置静态IP地址。整体流程涵盖了网络环境的初期配置、虚拟机的创建以及详细的静态IP设置步骤,使整个搭建过程清晰可循。

首先,文章从Hyper-V环境的网络配置入手,通过创建虚拟交换机和虚拟机,确保虚拟化环境的稳定运行。接着,作者演示了如何获取IP地址、子网掩码、网关和DNS信息,详细说明了每个参数的作用与获取方法,以便准确无误地配置网络。

最后,在静态IP配置部分,通过修改Linux系统下的网络配置文件,成功实现了从动态分配到静态配置的转换。全程配合命令示例和截图,帮助读者直观理解和操作。整体内容不仅具有较强的实践指导意义,也为后续的系统调试与运维提供了宝贵参考。

阅读更多
解决 Prometheus 警告:Error on ingesting samples that are too old or are too far into the future

解决 Prometheus 警告:Error on ingesting samples that are too old or are too far into the future

在使用 Prometheus 进行监控时,可能会遇到如下警告日志:

1
2
level=warn ts=2021-08-16T03:20:04.960Z caller=scrape.go:1507 component="scrape manager" scrape_pool=mtail target=http://18.167.146.20:3903/metrics msg="Error on ingesting samples that are too old or are too far into the future" num_dropped=78
level=warn ts=2021-08-16T03:20:04.961Z caller=scrape.go:1203 component="scrape manager" scrape_pool=mtail target=http://18.167.146.20:3903/metrics msg="Appending scrape report failed" err="out of bounds"

类似的日志经常反复出现,报错内容包括“samples that are too old”或“too far into the future”,且伴随 “err=out of bounds”。本文将分析该问题的原因,并给出实用的解决方案。

阅读更多
解决 MongoDB 启动时报错 “key are too open” 权限问题

解决 MongoDB 启动时报错 “key are too open” 权限问题

在使用 MongoDB 部署副本集或分片集群时,常常需要配置 keyFile 来实现节点之间的认证。但在启动 MongoDB 服务时,遇到如下报错:

1
2
2016-03-18T10:39:58.889+0800 I CONTROL [main] ***** SERVER RESTARTED *****
2016-03-18T10:39:58.918+0800 I ACCESS [main] permissions on /usr/local/mongodb/conf/keyFilers0.key are too open

该错误提示表明 MongoDB 对 keyFile 文件的权限要求比较严格,当前文件权限设置不符合安全要求,导致服务启动失败。

阅读更多