2

我有我的家用计算机 A 和一台工作计算机 C,我想使用 unison 进行同步。中间是一台工作计算机B。A可以与B通信,B可以直接与C通信,但A和C不能直接相互连接。事实上,通信图看起来像 A->B<->C。即A可以连接到B但B不能连接到A。

举例说明我如何使用此设置,如果我想从 A SSH 到 C,我目前执行以下操作

ssh -t -X -C me_B@B ssh -X me_C@C

如何从 A 同步运行并与 C 同步,也许使用 ssh 端口转发?

为了更清楚一点,C 具有到 Internet 的未经过滤的传出连接。B 具有与 C 和 Internet 的未过滤的传入和传出连接。A是我家的电脑。


更新

以下命令行适用于我至少将文件从 A 复制到 C

scp -oProxyCommand="ssh me_B@B nc -v %h %p" foo/* me_C@C:foo

有什么方法可以使用这个想法来协调工作吗?

4

1 回答 1

2

是的,可以使用 ssh 端口转发。如果要将 C 的 22 端口上的 ssh 转发到本地端口 3000(例如),请在 A 上使用以下命令:

# Create the tunnel
ssh -L 3000:C:22 userB@B -N

发出命令后,您可以使用以下命令从 A 登录到 C:

# Connect using the tunnel
ssh -p 3000 userC@localhost

注意:在下面的讨论中,事实证明,在 OP 的网络中,只能使用以下命令建立通过隧道的连接:

ssh -p 3000 -l userC localhost

请注意,我使用-l userC的是userC@.


现在你可以unison像这样使用:

unison directory ssh://userC@localhost:3000 directory
于 2014-10-20T16:43:45.383 回答