CLIProxyAPI 内网 TLS 证书签发与 CA 导入
为 cli-proxy-api 生成内网自签 CA 与服务证书(SAN 覆盖 192.168.114.9 和 192.168.3.9),并在 Linux/Windows 客户端导入 CA。
为 cli-proxy-api 生成内网自签 CA 与服务证书(SAN 覆盖 192.168.114.9 和 192.168.3.9),并在 Linux/Windows 客户端导入 CA。
通过服务启停钩子(ExecStartPost/ExecStop)并叠加 timer,实现 CLIProxyAPI usage 统计的启动导入、停止导出和周期性备份。
在 Linux 用户态通过 systemd –user 部署 CLI Proxy API,包含目录规划、配置模板、服务文件、启动验证与常用运维命令。
解释 Codex 在终端里的通知机制(OSC 9 / BEL 与 notify hook)、Ghostty 的接收条件,以及可直接复现的 shell 命令。
总结 Ghostty + SSH + Vim 场景下无法右键复制的根因,并给出可直接复现的解决步骤。
标准化说明 Bash 代理配置的文件职责、加载链路与三类用法:会话级开关、单命令走代理、单命令禁代理。
什么是 Desktop Entry 在 GNOME 桌面环境里,应用菜单、搜索结果、Dock 固定项、文件关联、右键动作菜单,很多都依赖 .desktop 文件。 一个关键结论 严格来说,并不存在一套单独的“GNOME Entry 规范”。GNOME 主要遵循的是 freedesktop.org 的 Desktop Entry Specification。因此,平时说的 “GNOME .desktop 启动器” 本质上是 Desktop Entry 规范在 GNOME 中的实现。 也就是说: 文件扩展名通常是 .desktop 语法是 INI 风格的键值对 核心规范来自 freedesktop.org GNOME 会在此基础上支持少量 GNOME 扩展字段或行为 阅读路线 这篇笔记现在可以按三个角度来读: #入门篇:先快速写出一个能出现在 GNOME 菜单里的用户级启动器 #规范介绍篇:系统理解字段、Desktop Entry ID、显示控制与本地化 #实战篇:直接解决代理、自启动、Dock 合并、重复菜单项等问题 1. Desktop Entry 能做什么 .desktop 文件最常见的用途包括: 出现在应用菜单和搜索中 定义应用如何启动(Exec=) 指定图标(Icon=) 声明 MIME 关联(MimeType=) 控制是否只在 GNOME 中显示(OnlyShowIn=GNOME;) 定义右键动作菜单(Actions=) 用于开机自启(放到 ~/.config/autostart/ 时) 2. 常见存放路径与优先级 在 GNOME / Linux 环境中,常见位置如下: ...
GRUB 2.12 至 2.14 版本重要更新分析,涵盖龙架构支持、安全启动、文件系统等核心变化。
1. 事件背景 在日常维护中,因发现 /var/lib/dnf 目录下 sqlite-wal 文件过大,为清理磁盘执行了删除操作。随后通过备份/系统手段恢复了数据。本文档记录了恢复后的数据压缩过程及长期维护建议。 2. 优化前后的详细数据对比 (ls -lh) 2.1 初始恢复状态 (18M) 此时数据库存在碎片,且包含运行时的临时映射文件(__db.*)。 [root@localhost ~]# ls -lh /var/lib/rpm/ total 18M -rw-r--r--. 1 root root 2.2M 2月 13 16:33 Basenames -rw-r--r--. 1 root root 8.0K 1月 29 16:32 Conflictname -rw-r--r--. 1 root root 280K 2月 13 16:37 __db.001 -rw-r--r--. 1 root root 88K 2月 13 16:37 __db.002 -rw-r--r--. 1 root root 1.3M 2月 13 16:37 __db.003 -rw-r--r--. 1 root root 560K 2月 13 16:33 Dirnames -rw-r--r--. 1 root root 13M 2月 13 16:33 Packages ...(其他小文件省略)... [root@localhost ~]# du -s /var/lib/rpm/ 17928 /var/lib/rpm/ 2.2 重建优化后状态 (14M) 执行 rpm --rebuilddb 后,系统重新整理了 Berkeley DB 结构,删除了冗余碎片,并自动清理了 __db.* 文件。 ...
问题分析 当您重装Linux系统时,新的操作系统会生成全新的SSH主机密钥。客户端SSH会检测到远程主机的密钥与本地 known_hosts 文件中的记录不匹配,因此拒绝连接。 警告原因: 新系统的 ED25519 密钥与旧系统的 ECDSA 密钥不同 SSH 严格验证模式(StrictHostKeyChecking)被启用 这是一项安全特性,防止中间人攻击(MITM) 解决方案 方案 1:逐次移除旧密钥(推荐 - 手动控制) 优点: 安全,需要明确意识到密钥变化 缺点: 每次重装都需要手动处理 步骤 1:移除旧密钥 # 使用SSH提示中给出的命令 ssh-keygen -f ~/.ssh/known_hosts -R "192.168.114.12" 步骤 2:接受新密钥 ssh 192.168.114.12 # 首次连接时会提示: # The authenticity of host '192.168.114.12 (192.168.114.12)' can't be established. # 输入 'yes' 接受新密钥 方案 2:自动忽略主机密钥验证(快速 - 仅用于测试环境) ⚠️ 安全警告: 仅用于可信的内网测试环境。不要在生产环境或不信任的网络中使用。 方法 A:单次连接忽略验证 ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 192.168.114.12 方法 B:为特定主机配置 SSH config 编辑 ~/.ssh/config: ...
记录 SSH config 中 Host 别名匹配规则导致连接失败问题,以及排查与修复过程。
问题描述 现象 从当前系统无法 SSH 连接到 host2 从当前系统可以正常 SSH 连接到 host1 从 host1 可以正常 SSH 连接到 host2 错误信息 Received disconnect from host2 port 22:2: Too many authentication failures 排查过程 1. 网络连通性检查 ping -c 3 host2 # ✅ 通 nc -zv host2 22 # ✅ 端口开放 ip route get host2 # ✅ 路由正常 2. SSH 详细调试 ssh -vvv user1@host2 发现连接建立后,在认证阶段失败: SSH agent 返回 10 个密钥 依次尝试所有密钥后被服务器断开 3. 检查本地 SSH Agent 密钥 ssh-add -l 发现 agent 中有 10 个密钥: ...
在 PVE 控制台通过 rd.break 重置 Rocky Linux 9 root 密码时,若遗漏 /.autorelabel,可能出现“密码已改但仍无法登录”。本文给出标准流程、补救步骤、验证与回滚。
日期: 2025-01-15 操作系统: Rocky Linux release 9.3 (Blue Onyx) 主机IP: 192.168.3.7 (WireGuard接口 wg0) 物理接口: ens18 - 192.168.2.7/24 问题现象 在 192.168.3.7 服务器上无法解析域名: # 错误示例 ping google.com ping: google.com: Name or service not known # 但IP连接正常 ping 8.8.8.8 # 正常 根因分析 1. 检查 DNS 配置文件 cat /etc/resolv.conf 结果: 文件为空,只有注释 # Generated by NetworkManager 2. 检查 DNS 服务状态 systemctl status systemd-resolved 结果: systemd-resolved 服务未启用 (disabled/inactive) 3. 检查网络接口配置 nmcli connection show ens18 nmcli connection show wg0 结果: 两个接口的 ipv4.dns 配置都为空 (--) ...
FAT 文件系统的 UUID 实际上是其 Volume Serial Number(卷序列号),是一个 8 位十六进制数(如 ABCD-1234)。 查看当前 UUID # 方法一:blkid sudo blkid /dev/sda1 # 方法二:lsblk lsblk -f /dev/sda1 输出示例: /dev/sda1: SEC_TYPE="msdos" UUID="3AAB-A5AC" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI" PARTUUID="aaa92e36-581d-4fd0-8168-37af4f56f3b6" FAT12/16 与 FAT32 的卷序列号偏移差异 关键区别 FAT12/FAT16 和 FAT32 的卷序列号存储在引导扇区的不同偏移位置,操作前必须先确认 FAT 类型。 FAT 类型 卷序列号偏移(十六进制) 偏移(十进制) FAT12/FAT16 0x27 39 FAT32 0x43 67 如何判断 FAT 类型 # blkid 查看 SEC_TYPE sudo blkid /dev/sda1 # 若显示 SEC_TYPE="msdos" 且文件系统标识为 "FAT16",则为 FAT16 # 或直接查看引导扇区中的文件系统标识字符串 # FAT16 标识在偏移 0x36,长度 8 字节 sudo xxd -s 0x36 -l 8 /dev/sda1 # FAT32 标识在偏移 0x52,长度 8 字节 sudo xxd -s 0x52 -l 8 /dev/sda1 修改 UUID 方法一:使用 mlabel(推荐) mlabel 来自 mtools 包,可以在线修改,自动识别 FAT 类型,无需关心偏移量: ...
先记结论 --socks5 / socks5:// 是 本地 DNS 解析(local resolve)。 --socks5-hostname / socks5h:// 是 代理端 DNS 解析(remote resolve),跨网络场景更常用。 curl 支持的 SOCKS 参数(完整) $ curl --help all | grep socks --socks4 <host[:port]> SOCKS4 proxy on given host + port --socks4a <host[:port]> SOCKS4a proxy on given host + port --socks5 <host[:port]> SOCKS5 proxy on given host + port --socks5-basic Username/password auth for SOCKS5 proxies --socks5-gssapi Enable GSS-API auth for SOCKS5 proxies --socks5-gssapi-nec Compatibility with NEC SOCKS5 server --socks5-gssapi-service <name> SOCKS5 proxy service name for GSS-API --socks5-hostname <host[:port]> SOCKS5 proxy, pass hostname to proxy 本机版本与帮助信息确认(2026-04-14) 当前工作站(192.168.114.4)实测: ...
问题描述 在 Proxmox VE (PVE) 主机上执行命令时出现 Perl locale 警告: perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = (unset), LC_NUMERIC = "zh_CN.UTF-8", LC_COLLATE = (unset), LC_TIME = "zh_CN.UTF-8", LC_MESSAGES = (unset), LC_MONETARY = "zh_CN.UTF-8", LC_ADDRESS = "zh_CN.UTF-8", LC_IDENTIFICATION = "zh_CN.UTF-8", LC_MEASUREMENT = "zh_CN.UTF-8", LC_PAPER = "zh_CN.UTF-8", LC_TELEPHONE = "zh_CN.UTF-8", LC_NAME = "zh_CN.UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("en_US.UTF-8"). 环境信息 ...
概述 在Windows系统上实现SOCKS代理服务有多种方案,从简单工具到企业级解决方案。本文总结了主要的软件和实现方法。 一、专业代理服务器软件 1. 3proxy (推荐) 特点: 轻量级、多功能代理服务器 支持协议: SOCKS v4/v5、HTTP、HTTPS、FTP、POP3等 优势: 开源免费 配置简单 资源占用低 支持Windows服务模式运行 支持认证和访问控制 适用场景: 个人和小团队使用 官网: https://github.com/z3APA3B/3proxy 2. CCProxy 特点: 国产代理服务器软件 支持协议: HTTP/FTP/SOCKS等 优势: 界面友好,中文支持 账户管理功能完善 支持带宽控制 日志记录详细 适用场景: 企业网络共享 官网: http://www.youngzsoft.net/ccproxy/ 3. Antinat 特点: 专门针对SOCKS5协议的代理服务器 优势: 开源 配置灵活 跨平台支持 适用场景: 需要纯SOCKS5服务的场景 二、SSH隧道方法 1. 使用PuTTY/KiTTY # 命令行示例 plink -N -D 1080 user@remote-server 优势: 免费(使用开源SSH服务器) 安全性高(SSH加密) 无需额外安装代理软件 适用场景: 临时需要、已有SSH服务器 2. 使用Windows内置SSH客户端 (Windows 10+) ssh -N -D 1080 user@remote-server 优势: 系统自带,无需额外软件 三、网络共享工具 1. Proxifier 特点: 代理客户端,支持强制程序走代理 优势: 支持SOCKS4/5和HTTP 规则灵活 可以实现透明代理 适用场景: 需要让特定程序走代理 2. SocksCap 特点: 老牌SOCKS代理工具 优势: 轻量级 注意: 较老的项目,更新不频繁 四、开源项目 1. shadowsocks-libev / v2ray 特点: 虽然主要用于科学上网,但都支持SOCKS5本地代理 优势: 高性能 支持多种协议 配置灵活 适用场景: 需要现代化代理协议 2. ** Dante** 特点: 专业的SOCKS服务器 优势: 开源 功能强大 Unix/Linux上表现优秀,Windows需要WSL 适用场景: 高级用户 五、编程实现方案 1. Python + PySocks import socket import socks socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 1080) socket.socket = socks.socksocket 2. Node.js + socksv5 const socks5 = require('socksv5'); const server = socks5.createServer(); server.listen(1080); 六、选择建议 个人使用/临时需求 SSH隧道: 最简单,免费 3proxy: 配置灵活,功能全面 小团队/企业使用 CCProxy: 界面友好,管理方便 3proxy: 开源免费,可控性强 开发集成 shadowsocks/v2ray: 现代化,高性能 编程实现: 最大灵活性 七、安全注意事项 认证机制: 生产环境务必启用用户名/密码认证 访问控制: 限制允许连接的IP地址范围 日志审计: 记录代理访问日志 加密传输: 考虑使用SSH隧道或TLS加密 防火墙规则: 限制代理端口的外部访问 八、配置示例 (3proxy) # 3proxy配置文件示例 daemon timeout 30 nserver 8.8.8.8 nserver 8.8.4.4 # SOCKS5代理 socks -p1080 # 带认证的SOCKS5 users user:CL:password socks -p1080 -uuser -ppassword # 访问日志 log /var/log/3proxy.log D 九、详细安装配置指南 3proxy 安装配置步骤 1. 下载安装 # 使用Chocolatey安装(推荐) choco install 3proxy # 或从GitHub下载最新版本 # https://github.com/z3APA3B/3proxy/releases 2. 配置文件详解 (3proxy.cfg) # ====== 基础配置 ====== # 运行为守护进程 daemon # 设置超时时间(秒) timeout 30 # DNS服务器 nserver 8.8.8.8 nserver 8.8.4.4 # 设置管理员 [email protected] # ====== 认证配置 ====== # 用户配置(明文密码,仅用于示例) # 格式: username:CL:password (CL = Cleartext) users user1:CL:password123 users user2:CL:pass456 # 或者使用NTLM认证(Windows域环境) users user3:NT:domain # ====== SOCKS5服务配置 ====== # 无认证SOCKS5(仅内部网络) # socks -p1080 # 带认证的SOCKS5 socks -p1080 # 限制访问IP allow * 192.168.1.0/24 deny * # ====== 日志配置 ====== # 日志文件路径(Windows路径) log C:\Logs\3proxy\access.log D logformat "- +_L%t. %N.%p %E %U %C:%c %R:%r %O %I %h %T" # 轮转日志(每天) rotate daily # ====== 高级配置 ====== # 带宽限制(每用户) counter user1 bandlimin 10000000 user1 # 10Mbps # 连接数限制 limconn 10 * # 每用户最多10个连接 # ====== 代理链配置 ====== # 链式代理(级联) parent 1000 http://upstream-proxy:8080 chain * 1000 3. 作为Windows服务运行 @echo off REM 安装3proxy为Windows服务 REM 设置服务名称 set SERVICE_NAME=3proxy REM 设置可执行文件路径 set EXE_PATH=C:\3proxy\3proxy.exe REM 设置配置文件路径 set CONFIG_PATH=C:\3proxy\3proxy.cfg REM 安装服务 sc create %SERVICE_NAME% binPath= "%EXE_PATH% %CONFIG_PATH%" start= auto REM 启动服务 sc start %SERVICE_NAME% echo Service installed and started successfully 4. 管理命令 # 启动服务 net start 3proxy # 停止服务 net stop 3proxy # 查看服务状态 sc query 3proxy # 删除服务 sc delete 3proxy CCProxy 安装配置步骤 1. 安装 下载CCProxy安装包 运行安装程序,按提示完成安装 安装完成后会自动启动CCProxy 2. 配置SOCKS代理 打开CCProxy主界面 点击"选项" → “高级” 在"协议"选项卡中: 勾选"SOCKS" 设置SOCKS端口(默认1080) 选择SOCKS版本(SOCKS 4/5) 点击"账户" → “新建"添加用户账户 3. 权限设置 点击"账户” → “权限” 添加允许的IP地址范围 设置带宽限制 配置网站过滤(如需要) SSH隧道详细配置 PuTTY图形界面配置 基本连接设置: ...
getfattr 提示 “Removing leading ‘/’ from absolute path names” 现象 getfattr -d -m security /sysroot/bin/bash # 输出 getfattr: Removing leading '/' from absolute path names # file: sysroot/bin/bash security.selinux="system_u:object_r:shell_exec_t:s0" 原因 这是 getfattr 的默认行为,不是错误。 扩展属性备份格式(dump/restore)使用相对路径 便于跨系统恢复(不同系统的根路径可能不同) 工具会自动去掉路径开头的 / getfattr 常用选项 getfattr [选项] path... 选项 长选项 功能 -d --dump 获取所有扩展属性值 -n name --name=name 获取指定名称的扩展属性 -e en --encoding=... 编码格式:text, hex, base64 -m pattern --match=pattern 只显示匹配模式的属性 -h --no-dereference 不解引用符号链接 --absolute-names 保留开头的 /(绝对路径) -R --recursive 递归子目录 -L --logical 逻辑遍历,跟随符号链接 -P --physical 物理遍历,不跟随符号链接 --only-values 只输出值,不输出属性名 --version 显示版本 --help 显示帮助 使用示例 1. 查看所有 security 相关属性 # 默认(相对路径) getfattr -d -m security /sysroot/bin/bash # 输出 getfattr: Removing leading '/' from absolute path names # file: sysroot/bin/bash security.selinux="system_u:object_r:shell_exec_t:s0" 2. 保留绝对路径(使用 –absolute-names) getfattr --absolute-names -d -m security /sysroot/bin/bash # 输出(没有提示,路径带 /) # file: /sysroot/bin/bash security.selinux="system_u:object_r:shell_exec_t:s0" 3. 查看指定属性 # 只查看 security.ima getfattr -n security.ima /sysroot/bin/bash # 只查看 security.evm getfattr -n security.evm /sysroot/bin/bash 4. 使用十六进制编码 getfattr -e hex -d -m security /sysroot/bin/bash 5. 递归查看目录 getfattr -R -d -m security /sysroot/usr/lib 6. 只输出值(不显示属性名) getfattr --only-values -n security.selinux /sysroot/bin/bash IMA/EVM 常用属性说明 属性 说明 security.selinux SELinux 标签 security.ima IMA 签名/哈希 security.evm EVM 签名 security.capability 文件能力(capabilities) security.SMACK64 SMACK 标签 验证签名常用命令 # 查看所有 security 属性 getfattr -d -m security /path/to/file # 查看并保留绝对路径 getfattr --absolute-names -d -m security /path/to/file # 查看 IMA 签名 getfattr -n security.ima /path/to/file # 查看 EVM 签名 getfattr -n security.evm /path/to/file # 使用 evmctl 验证 IMA evmctl ima_verify /path/to/file # 使用 evmctl 验证 EVM evmctl verify /path/to/file 补充:setfattr(设置扩展属性) # 设置属性 setfattr -n security.ima -v "value" /path/to/file # 删除属性 setfattr -x security.ima /path/to_file
推荐命令 realpath <path> 其他方法 命令 说明 realpath <path> 最常用,自动解析所有符号链接 realpath -s <path> 不跟随符号链接 readlink -f <path> 老系统常用,realpath 的替代 readlink -m <path> 类似 -f,但允许不存在的路径 手动处理(精简系统无 realpath 时) # 方法1:cd + pwd cd <path> && pwd # 方法2:子shell(不影响当前目录) (cd <path> && pwd) 示例 realpath build/debug/c9b0316ded79/rootfs # 输出: /home/van/mmzyc/v10repos/v10-base-os/build/debug/c9b0316ded79/rootfs