当前位置: 首页 > news >正文

PostgreSQL archive_command 场景下的 postgres 免密 SSH 配置与排查实录

一、背景说明

生产环境中,PostgreSQL 的归档配置如下:

archive_command = 'rsync -a %p postgres@10.1.1.2:/var/lib/pgsql/archive/%f'

关键特征:

  • 使用postgres 用户

  • 通过rsync + ssh

  • 每个 WAL 段一次独立连接

  • 无交互(必须免密)

为了复现并分析 rsync/ssh 在该模型下的性能上限,我在两台新服务器上搭建了等价环境:

角色

IP

说明

A(发送端)

192.168.1.167

模拟主库,执行 archive_command

B(接收端)

192.168.1.240

模拟归档机

Jumpserver

仅用于人工登录,不参与运行时链路

⚠️注意

archive_command 运行时是A → B 直连不会经过 jumpserver,jumpserver 仅用于“人工运维操作”。


二、目标

实现:

A 上的 postgres 用户 → 通过 SSH 免密 → 直连 B 上的 postgres 用户 → 执行 rsync

三、免密登录配置步骤

1️⃣ A 上生成 postgres 用户的 SSH key

sudo -u postgres -i echo $HOME # /var/lib/pgsql mkdir -p ~/.ssh chmod 700 ~/.ssh ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_ed25519

生成:

  • /var/lib/pgsql/.ssh/id_ed25519

  • /var/lib/pgsql/.ssh/id_ed25519.pub


2️⃣ 通过 jumpserver 登录到 B,注入公钥

由于B 无密码、只能通过 jumpserver 登录,无法使用 ssh-copy-id,只能手工注入。

在 B 上:

sudo -u postgres -i mkdir -p ~/.ssh chmod 700 ~/.ssh cat >> ~/.ssh/authorized_keys <<'EOF' ssh-ed25519 AAAAC3... postgres@ip-192-168-1-167 EOF chmod 600 ~/.ssh/authorized_keys exit

3️⃣ 修复 SELinux 上下文(非常关键)

B 上执行:

restorecon -Rv /var/lib/pgsql/.ssh

输出示例:

Relabeled /var/lib/pgsql/.ssh to ssh_home_t Relabeled /var/lib/pgsql/.ssh/authorized_keys to ssh_home_t

如果跳过这一步,在SELinux Enforcing的系统上,免密会“看起来都对但就是不生效”。


四、问题出现:A 连接 B 卡住

在 A 上验证免密:

sudo -u postgres ssh -o BatchMode=yes postgres@192.168.1.240 "echo OK"

现象:

  • 命令卡住,无输出

  • 不报权限错误

  • 不提示密码


五、排查过程(关键)

1️⃣ 使用 ssh 调试模式定位阶段

sudo -u postgres ssh -vvv postgres@192.168.1.240

输出停留在:

debug1: Connecting to 192.168.1.240 [192.168.1.240] port 22.

👉说明:连接卡在 TCP 层,尚未进入 SSH 协议


2️⃣ 验证端口连通性

nc -vz 192.168.1.240 22

结果:连接失败


3️⃣ 结论定位

  • jumpserver 能连 B

  • A → B22 端口不通

  • SSH 尚未进入认证阶段

👉根因:安全组 / 防火墙未放通 A → B 的 22 端口


4️⃣ 修复

在云平台安全组中:

  • 放通 192.168.1.167 → 192.168.1.240:22


六、修复后验证

再次在 A 上执行:

sudo -u postgres ssh -o BatchMode=yes postgres@192.168.1.240 "echo OK"

输出:

OK

免密登录成功 🎉


八、Checklist(30 秒自检版)

  • A → B 的 22 端口是否放通

  • postgres home 权限是否 700

  • authorized_keys 权限是否 600

  • SELinux context 是否为 ssh_home_t

  • postgres 是否允许 ssh 登录

http://www.jsqmd.com/news/345244/

相关文章:

  • 2026年宝藏外贸软件合集分析,哪家外贸软件性价比高看这里 - myqiye
  • 备考时间紧张如何高效选择?2026年四川考公机构推荐与评测,解决规划难题 - 品牌推荐
  • 改稿速度拉满!继续教育论文神器 —— 千笔写作工具
  • 聊聊口碑好的桥梁橡胶支座厂家,铅芯桥梁橡胶支座来样定制 - 工业推荐榜
  • 2026口碑前三 山西旅游团推荐指南 聚焦安全与专业服务 - 真知灼见33
  • 导师严选9个降AIGC平台 千笔AI帮你精准降AI率
  • 2026年高性价比钢结构球形支座排名,衡水博利定制生产靠谱吗 - 工业品牌热点
  • vscode中的claude code插件自定义模型,如何配置claudeCode.environmentVariables
  • 2026年钢结构球形支座推荐厂家排名,谁家价格更实惠 - 工业品网
  • cc-switch安装方法、介绍及遇到的bug
  • 2026年实力强的离婚律师事务所推荐,京津冀地区靠谱之选 - 工业设备
  • 如何在vscode中使用Claude code以及插件中配置setting.json无效的解决方法
  • 2026盐湖提锂领先的技术服务商有哪些好的品牌 - myqiye
  • 2026年评价高的工业级液氧/污水处理液氧新厂实力推荐(更新) - 行业平台推荐
  • Claude Code、Codex、OpenCode 和 Gemini CLI的介绍
  • 流延机制造厂哪家售后好,这些地区靠谱品牌大盘点 - 工业品网
  • 装修资源合集
  • 计算机毕设Java基于Java的班级管理系统 Java高校班级事务综合管理平台 Java校园班级信息协同系统
  • 计算机毕设Java教师工作量统计系统 Java高校教师绩效核算平台 SpringBoot教学任务量智能统计系统
  • 2026年新能源汽车检测机构推荐:多场景实测评价,解决电池健康与估值核心痛点 - 品牌推荐
  • 2026年新能源汽车检测机构推荐:基于技术合规与成本评测,解决安全与效率核心痛点 - 品牌推荐
  • 计算机毕设java图书借阅管理系统 Java智慧图书馆借阅平台设计与实现 SpringBoot高校图书流通管理系统开发
  • 盘点广西等地桥梁盆式橡胶支座厂家,哪家口碑好? - 工业品牌热点
  • 第4天:用户画像绘制——让客户形象鲜活起来
  • 高效索引之HNSW_SQ:如何同时兼顾RAG的速度、召回率与成本
  • 2026年评价高的本地税务公司/税务问题业内推荐 - 行业平台推荐
  • 为什么你的年度计划只值两个字“要钱”?这份“自检清单”能救命
  • 2026年新能源汽车检测机构推荐:基于车队管理场景长期评价,针对运维成本与安全隐忧痛点 - 品牌推荐
  • (ICLR26) Task-Adaptive Parameter-Efficient Fine-Tuning for Weather Foundation Models
  • 2026年热门的耐腐蚀反应釜/哈氏合金反应釜优质供应商推荐参考 - 行业平台推荐