我想将一些只能以 root 身份读取的文件备份到只有我的用户有权访问的远程存储库。如果我borg
使用自己/etc
的源代码运行,则permission-denied
在尝试读取某些文件(例如/etc/crypttab
.如果我borg
以 root 身份运行sudo
,则可以读取文件,但无法写入存储库,因为我的本地root
用户没有对远程存储库的 ssh 访问权限,并且没有该存储库的存储库密钥(即/root/.borg/
没有不存在)。
回顾一下:
$ borg create ssh://me@remote:/backup/my_repo.borg::demo /etc
会出错,因为我无法读取 中的某些文件/etc
,我想要备份。和
$ sudo borg create ssh://me@remote:/backup/my_repo.borg::demo /etc
将会失败,因为 root 既无权访问ssh://me@remote
也无权存储库。
现在,一个明显的解决方法是授予 root ssh 访问权限和存储库密钥,但我想知道是否有更好的解决方案。
答案1
如果您通过 sudo 以 root 身份运行 borg,则您使用的不是从用户生成的密钥,而是从 root 生成的密钥。 root 尚未配置为使用用户的私钥(尽管它有权访问)。
您应该通过创建一个新的 ssh 密钥(使用sudo ssh-keygen
)来解决此问题,并在远程端也接受该密钥(使用sudo ssh-copy-id me@remote
并输入密码)。
另一个(但不太好的)解决方案是即使在以 root 身份运行命令时也使用用户的 ssh 密钥:export BORG_RSH='ssh -i ~/.ssh/id_rsa' && sudo borg create ssh://me@remote:/backup/my_repo.bor::demo /etc
—但是……不要;)