Ssh
在 SSH 上使用 Unison / rsync 同步需要完整文件系統訪問但禁用 root 登錄的站點
假設兩個站點A和B在兩端都有文件伺服器。的內容
/storage
應該在站點之間同步,保留所有權和權限。沒有一個包羅萬象的組,該組擁有/storage
. 如果執行 Unison 或 rsync pid=0,則進行同步很簡單。但是 SSH 將用作傳輸,並且出於顯而易見的原因,兩端都禁用了 SSH root 登錄。如何使 A 和 B 與在這種情況下保留的所有權限保持同步。我能想到的兩種方法:
執行允許 root 登錄但只能通過 A 和 B 之間的 VPN 連接的輔助 SSH。
添加一個特殊的同步使用者 sshd 配置強制執行一個
- Unison 或 rsync 的 SUID 包裝器(正確操作很危險)。
sudo
Unison 或 rsync 的包裝器對問題遠端使用 root over ssh for unison給出的答案建議通過 SSH 啟用無密碼 pubkey root 登錄——我不太喜歡這種解決方案。
還有其他想法嗎?
通過 SSH 的公鑰 root 登錄可能是您最好的選擇。您還可以將此訪問權限限制為單個主機:
AllowUsers root@192.0.2.123
甚至使用該
Match
指令來獲取給定事物(地址、使用者等)的唯一配置:Match Address 192.0.2.123 PasswordAuthentication no RSAAuthentication yes PubkeyAuthentication yes PermitRootLogin yes
如何以 root 身份執行遠端 unison 實例:
遠端
- 不要碰你的 sshd 配置,尤其是不要創建任何特殊的同步$$ ssh $$如您在問題中所述的使用者
- 創建 sudo 包裝器
vi sunison
:#!/data/data/com.termux/files/usr/bin/bash su --preserve-environment -c `which unison` "$@"
(是的,這是針對 Termux 環境的,根據您的需要進行簡化)
客戶端
- 與
-servercmd sunison
- 或添加到您的同音檔案
servercmd = sunison
筆記
- 類似的東西
servercmd = sudo unison
是最好的,但它對我不起作用