我有点困惑如何跑步齐奏在 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 身份运行命令而不使用密码的安全隐患。确保您的设置是安全的,并且您了解所涉及的风险。使用远程系统时,请始终遵循最佳安全做法。