我正在尝试将此命令用作用户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_rsa
和id_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文件
答案 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--