通过 ssh 远程使用 root 进行 unison

通过 ssh 远程使用 root 进行 unison

我有点困惑如何跑步齐奏在 ubuntu 系统上同步具有组和所有者属性的文件,因为您需要 root 权限。但我需要远程自动执行此操作。我知道我可以为我的用户设置 ssh 密钥等,但这并不重要,因为我仍然无法以 root 权限通过 ssh 在远程系统上进行更改。

我想我的问题是:我如何在远程系统上使用 root 进行 unison?或者是否有办法为用户设置一个命令,使其无需密码即可以 root 身份“自动运行”?

或者还有其他方法可以做到这一点?

任何有关此问题的指导都将受到赞赏。

答案1

您应该能够按照您所述使用密钥设置 ssh 登录。

确保你的 sshd_config 允许 root 登录

PermitRootLogin without-password

然后将生成的公钥复制到 /root/.ssh/authorized_keys。

您现在应该可以登录,只需告诉 unison 使用您生成的 ssh 密钥。

答案2

可以配置 Sudo 以避免在带有NOPASSWD参数的某些或所有命令上要求输入密码;但无论如何,我认为使用 ssh 密钥以 root 身份直接访问远程系统会更简单;设置无密码身份验证后,应按如下方式调用 unison:

unison a.tmp ssh://username@remotehostname/a.tmp

答案3

在远程系统上以 root 身份运行 Unison 存在安全风险,一般不建议这么做。但是,如果您有需要这样做的特定用例,您可以使用 sudo 和 SSH 在远程系统上以 root 权限执行 Unison 命令。

以下是分步指南:

设置 SSH 密钥验证:

确保在本地和远程系统上为用户设置了 SSH 密钥身份验证。这样您无需输入密码即可连接。

在本地机器上:

ssh-keygen -t rsa
ssh-copy-id user@remote_server

将 user 替换为您的用户名,将 remote_server 替换为远程服务器的 IP 地址或主机名

在远程系统上配置 sudo:

您可以配置 sudo 以允许您的用户以 root 身份执行特定命令而无需输入密码。 执行此操作时请谨慎,因为它会带来安全风险。

使用以下方式编辑 sudoers 文件维苏多

sudo visudo

在文件末尾添加以下行(将 yourusername 和 /path/to/unison 替换为您的实际用户名和 Unison 路径):

yourusername ALL=(ALL) NOPASSWD: /path/to/unison

保存并退出编辑器。

运行 Unison 命令:

ssh user@remote_server sudo /path/to/unison -batch -owner -group /path/on/local machine ssh://localhost:/path/on/remote/machine

现在,您可以使用 SSH 和 sudo 远程运行 Unison,再次提醒,请记住以 root 身份运行命令而不使用密码的安全隐患。确保您的设置是安全的,并且您了解所涉及的风险。使用远程系统时,请始终遵循最佳安全做法。

相关内容