rysnc 如何通过 ssh 工作?

ams*_*ams 9 ssh rsync

当通过 ssh 调用 rsync 程序时,rsync 和 ssh 之间的交互是什么样的?rsync 使用 ssh 的什么功能?我对 rsync 和 ssh 之间的交互感兴趣。

roa*_*ima 14

ssh提供从运行您的本地系统rsync到在远程服务器上运行的另一个实例的连接流。当地rsync开始它作为的一部分ssh连接过程-这是相同的实例rsync,可能使用的是该远程服务器上的后台。


什么是ssh 流

一个SSH流是你用你什么时候ssh到远程系统。您可能更喜欢将其称为ssh session。没关系。例如,ssh snow@grumpy.example.net将您连接到该远程系统并为您提供交互式会话。您在本地输入的任何内容都将被远程接收和操作,而远程生成的任何内容都将在本地呈现给您。

同样,ssh -t snow@doc.example.net vi /etc/hosts将建立一个连接以vi /etc/hosts在远程系统上运行,就像您在本地使用它一样。(该-t标志告诉ssh要确保远程命令 ,vi是在伪终端上运行的;否则它将跳过那层复杂性。)

现在,对于rsync,连接是由本地实例建立的,类似于ssh snow@bashful.example.net rsync --server -nlogDtpre.iLsf {local_path} {remote_path}. 这允许本地通过连接rsync与远程通信rsync,就像您用来访问同一个远程服务器一样。的远程实例rsync知道它是一个服务器,因为它在本地实例启动时提供了标志。

您可以看到rsync已通过运行这样远程调用ssh snow@dopey.example.net 'ps -ef | grep [r]sync',而rsync正在进行中。

为什么不rsync直接说没有ssh呢?

使用的好处ssh是双重的

  1. 它是一个众所周知的协议,用于身份验证和登录远程系统的机制很容易理解(需要理解它的人)和信任
  2. 它提供了一个安全和加密的通道,任何敏感数据都可以通过它安全地传递。如果没有这一层rsync,要么必须实现自己的加密,要么忽略这个问题。在当今的互联网连接世界中,两者都是危险的。