Rsync

如何在不安全的網路中的伺服器之間執行安全 rsync

  • August 11, 2009

基本上我要問的是,有沒有人遇到過將 rsync 包裝在 ssh 中的方法。

使用 OpenSSH v4.9+ sftp 有一些不錯的選項,允許您對傳入的連接進行 chroot 等 - 這是我會考慮的解決方案,但是我堅持使用 RHEL,而且 RHEL4 或 RHEL5 都不是那個版本的SSH。

我目前的解決方案是使用客戶端使用者的密鑰向伺服器端添加這樣的東西……

伺服器% cat ~/.ssh/authorized_keys
command="cd /srv/rsync/etl && tar --exclude './lost+found' -pcf - ./" ssh-rsa...

…因此客戶將被限制在一件事和一件事上…

client% ssh -T -i ${HOME}/.ssh/id_rsa oracle@database.com > sensative.tar

這可以保護連接以及伺服器(來自客戶端),但是效率低下,因為所有文件都將被一遍又一遍地檢索。

我正在使用 rsync 做類似(或更好)的事情。

好吧,我終於想通了,但解決方案並不像我希望的那樣優雅。

在伺服器端,您需要將以下內容添加到相關使用者的 authorized_keys 文件中……

no-pty, command="exit"

然後在客戶端上,您可以按如下方式創建隧道…

ssh -l username -fNTL 8073:server:873

建立隧道後,您可以像往常一樣 rsync - 無法使用雙冒號語法 - 到 localhost。

您選擇的 localhost 埠號 (8073) 顯然是完全可選的,只要記住這就是您必須 rsync到的

rsync --port=8073 -a user@localhost::mySecureStore /srv/some/place/

Rsync 支持使用 ssh 作為傳輸

rsync -az /path/to/source username@host:/path/to/destination

一些舊版本的 rsync 要求您明確指定 ssh

rsync -aze ssh /path/to/source host:/path/to/destination

使用 rsync 的替代方法是BC Pierce 的 Unison,它具有與 rsync 類似的功能,但在兩端保留本地索引以避免必須遍歷文件系統來計算增量

引用自:https://serverfault.com/questions/12102