如何在家用计算机和另一个网络内的计算机之间进行 rsync?

如何在家用计算机和另一个网络内的计算机之间进行 rsync?

我使用的所有计算机都运行 Ubuntu。为了在家工作,我通过 SSH 从家里的计算机连接到实验室计算机,如下所示:

# First a port knock is needed
joe@homepc> telnet ssh.university.edu 9000

# Next SSH to one of the external SSH servers of university
# This logs me into one of many SSH servers serving as interface
joe@homepc> ssh [email protected]

# Finally SSH to my lab PC inside university network
student7@university999> ssh joedude@labpc

# And I am in my labpc
joedude@labpc>

我如何使用rsync将 上的目录labpc与我的 上的目录同步homepc?此外,如果有某种方法可以自动执行所有这些操作,以便我只需从家用电脑使用一个命令即可进行 rsync,那就太棒了。

答案1

有几种方法可以解决这个问题,但是,因为我们想在你的家用电脑上运行 rsync 命令,所以我认为最好的方法是创建一个从你的家用电脑到 labpc 的隧道,如下所示:

joe@homepc> ssh -L 2222:127.0.0.1:2222 [email protected]

student7@university999> ssh -L 2222:127.0.0.1:22 joedude@labpc

现在,在您的家用电脑上,您应该能够直接通过 ssh 进入实验室电脑:

joe@homepc> ssh -p 2222 joedude@localhost

一旦它正常工作,您就可以建立一个 rsync 脚本。

我将以下几行添加到 ~/.ssh/config

# Tunnel to labpc
Host labpc_tun
User joedude
Port 2222
# ProxyCommand  ... TODO: set up tunnel automatically
HostName 127.0.0.1

现在,您应该可以执行此操作(在单独的窗口中,完成前两次 ssh 登录后):

joe@homepc> rsync labpc_tun:/path-on-labpc/ /path-on-homepc/

在此之后,您还可以进行更多改进,但我会等到您完成第一部分后再考虑需要多少自动化。要完全自动化,您需要使用 ssh-keygen 来允许无需密码的 ssh 登录。您还可以为第一个传出的 ssh 段向 .ssh/config 添加更多内容。使用 .ssh/config 中的 ProxyCommand 参数,您可以自动化整个过程。

相关内容