You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需postgres用户密码,通过SSH连接获取$PGDATA的方法求助

无需postgres密码,SSH获取$PGDATA的解决方案

没问题,这种情况太常见了——postgres作为系统服务用户,默认通常没有可登录的密码,甚至直接被禁用了密码登录。下面给你几个靠谱的方案,全程不用碰postgres的密码:

方案一:SSH密钥认证(推荐,长期可用)

这种方法是给postgres用户配置SSH公钥认证,之后你就能直接SSH登录postgres用户,或者用scp/rsync拉取数据,全程无密码。步骤如下:

  1. 本地生成SSH密钥对
    在你自己的电脑上打开终端,执行:

    ssh-keygen -t ed25519
    

    全程按回车就行,不要设置密钥密码(这样后续操作完全无密码)。生成后,你的公钥会存在~/.ssh/id_ed25519.pub里。

  2. 用管理员账号上传公钥到服务器的postgres用户目录
    先登录到服务器的管理员账号(比如你平时用的有sudo权限的账号):

    ssh your_admin_user@your_server_ip
    

    然后把本地的公钥传到服务器的临时目录,比如在本地终端执行(不用登录服务器):

    scp ~/.ssh/id_ed25519.pub your_admin_user@your_server_ip:/tmp/
    

    回到服务器的管理员终端,切换到postgres用户并配置密钥:

    sudo su - postgres
    # 创建.ssh目录(如果不存在)
    mkdir -p ~/.ssh && chmod 700 ~/.ssh
    # 创建并配置authorized_keys文件
    touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
    # 把公钥追加进去
    cat /tmp/id_ed25519.pub >> ~/.ssh/authorized_keys
    
  3. 测试连接并获取$PGDATA
    现在你可以直接SSH登录postgres用户:

    ssh postgres@your_server_ip
    

    或者直接用scp拉取整个$PGDATA目录到本地:

    scp -r postgres@your_server_ip:$PGDATA /your/local/target/path/
    

方案二:通过管理员账号sudo直接传输(临时用更快捷)

如果只是临时拉取一次数据,不想配置密钥,也可以用管理员账号配合sudo直接操作,全程不需要postgres的密码:

用tar+管道传输(压缩后传输,节省带宽)

在本地终端执行这条命令,直接把远程的$PGDATA打包后传到本地解压:

ssh your_admin_user@your_server_ip "sudo -u postgres tar -czf - -C \$(sudo -u postgres bash -c 'echo \$PGDATA') ." | tar -xzf - -C /your/local/target/path/

用rsync传输(增量同步,适合多次更新)

如果需要增量同步数据,用rsync更高效:

rsync -avz --rsync-path="sudo -u postgres rsync" your_admin_user@your_server_ip:$PGDATA/ /your/local/target/path/

注意事项

  • 如果配置密钥后还是无法登录postgres用户,检查postgres用户的shell是否被限制:执行sudo cat /etc/passwd | grep postgres,如果shell是/bin/false或/usr/sbin/nologin,可以临时改成/bin/bash:
    sudo usermod -s /bin/bash postgres
    
    要是只是传输文件,其实不需要交互式shell,scp/rsync依然可以正常工作。
  • 确保你的管理员账号有sudo权限,并且sudo时不需要输入密码(如果需要的话,命令执行过程中会提示你输入管理员密码,这是正常的)。

内容的提问来源于stack exchange,提问作者Carlinto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:40:01