如何允许一台服务器上的用户“postgres”rsync到另一台服务器?

时间:2013-01-16 02:46:07

标签: ssh rsync

我正在尝试将此命令用作用户postgres(因此我可以发送wal文件):

rsync -a /tmp/test postgres@server2:/tmp/test

但我收到错误:

Permission denied (publickey).

我在server1上运行ssh-keygen eval `ssh-agent`ssh-add作为postgres用户。 keygen创建了/var/lib/postgresql/.ssh/id_rsaid_rsa.pub,我可以看到它是使用ssh -vvv postgres@server2发送的。

在server2上,我创建了/var/lib/postgresql/.ssh/authorized_keys,将id_rsa.pub的内容放入server1中。它由postgres用户和组以及chmod 600拥有。.ssh目录也归postgres和chmod 700所有。

我可以在server2上的详细sshd日志中看到Failed publickey for postgres...

我错过了什么?我猜测sshd没有查看server2上的authorized_keys文件

1 个答案:

答案 0 :(得分:-2)

假设您的从属服务器允许密钥验证,您只需要设置'AllowedUsers'即可更新/etc/ssh/sshd_config,在这种情况下,您需要确保postgres在该列表中。

除此之外,只需ssh-keygen(保留私钥密码为空),然后将~/.ssh/authorized_keys目录/文件添加到从属服务器。 postgres的主目录为/var/lib/postgresql,但如果您在su用户postgres之后执行这些操作,则只能使用~,而不是chown提及你不必postgres任何东西,因为postgres将拥有主服务器上生成的ssh密钥,chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa.pub chmod 600 ~/.ssh/known_hosts # this one won't exist until you SSH once 将拥有从服务器上创建的目录/文件。

确保在主服务器和从属服务器上安全地设置文件权限:

在主人

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

在奴隶

POST https://fabrikam.sharepoint.com/_api/$batch HTTP/1.1
Authorization: Bearer <access token omitted>
Content-Type: multipart/mixed; boundary=batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Host: fabrikam.sharepoint.com
Content-Length: 527
Expect: 100-continue

--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Content-Type: application/http
Content-Transfer-Encoding: binary

GET https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('Composed%20Looks')/items?$select=Title HTTP/1.1

--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Content-Type: application/http
Content-Transfer-Encoding: binary

GET https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('User%20Information%20List')/items?$select=Title HTTP/1.1

--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1--