我有家用计算机 A 和工作计算机 C,我想使用 unison 对其进行同步。中间是一台工作计算机B。A可以与B通信,B可以直接与C通信,但A和C不能直接连接。事实上,通信图看起来像A->B<->C。即A可以连接到B,但B无法连接到A。
举一个如何使用此设置的示例,如果我想从 A 到 C 进行 ssh,我当前会执行以下操作
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
有什么方法可以利用这个想法来让一致发挥作用吗?
最佳答案
是的,可以使用 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
关于linux - 无法直接连接到远程计算机时如何同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26440326/