linux - 无法直接连接到远程计算机时如何同步

标签 linux ssh portforwarding unison

我有家用计算机 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/

相关文章:

php - SSH登录到Netbeans中用于PHP的远程服务器

Github SSH 工作但使用 ssh 克隆失败

java - 通过 JSch 连接到服务 - 预期数据包类型 30,得到 34

docker - docker-compose 中的端口转发

git - 需要在防火墙 : trying ssh tunneling 后面使用 git

portforwarding - 如何在 VMWare Player 14.1.2(Ubuntu 18.04 guest ,Windows 10 主机)上进行端口转发?

Ctrl + C : does it kill threads too along with main process?

c++ - soapcpp2 版本 2.8.1 丢失的文件

c - 如何从C程序向Linux中的控制台发送广播消息

linux - 停止 shell 脚本发送重复的电子邮件 - 使用文件标志