我的朋友刚刚告诉我有关 rsync 的信息,我尝试在命令行中使用它。我能够在自己的计算机上将文件从一个地方复制到另一个地方,但是当我尝试将文件“rsync”到同一 wifi 上的另一台计算机时,它不允许我这样做。
它说了类似“那台计算机拒绝了你。ssh 问题”之类的话,我记不清具体是什么了。但 ssh 对我来说仍然是一个困难的概念。我不知道把密钥放在哪里,也不知道如何查看它们是否有问题。我几乎对 wifi 或网络一无所知。
我做了解网络: 当我以前使用 Windows 时,我不得不使用 PuTTY。而且我已从 MySQL Workbench 连接到 AWS RDB 实例。我必须了解 IP 地址和端口。我对 HTTP 和 URL 有基本的了解。我使用过几次 ssh keygen。
但当谈到一般的网络时,我不知道从哪里开始。在使用 rsync 之前我应该知道什么/应该熟悉哪些工具?
*编辑我问这个问题的原因是:我可以查找错误,阅读 rsync 的文档,并可能让它工作。但如果我这样做,每次尝试使用 rsync 时我可能会遇到问题。然后,我可以像使用其他工具一样逐个学习问题。但我认为我可以避免这种学习方式,并且希望在尝试使用网络之前学习正确的网络知识,从而节省一些时间。
答案1
你应该知道:
访问远程系统
rsync
默认使用 SSH 协议SSH 协议实现(默认情况下)会验证服务器和客户端的身份
验证服务器、客户端使用首次使用时信任
-/.ssh/known_hosts
信任模型,默认情况下它会在文件中记住它所连接的服务器如果你用另一个服务器(使用相同的名称或 IP 地址)替换该服务器,客户端将会发出抱怨并要求你手动从文件中删除该
-/.ssh/known_hosts
条目
客户端可以使用基于密码或基于密钥的身份验证进行身份验证
基于密码的身份验证是被认为不太安全(尽管它本身并不是不安全的)
对于基于密钥的身份验证,您需要使用两个密钥:公钥和私钥(您可以使用
ssh-keygen
命令通常在客户端上)你将公钥(
-/.ssh/id_rsa.pub
客户端文件的内容)添加到-/.ssh/authorized_keys
服务器上帐户主目录中的文件中(同样是默认的),或者你可以使用ssh-copy-id
命令为你做这件事你通常将私钥存储在
-/.ssh/id_rsa
客户端您应该考虑使用密码保护私钥(您可以进一步配置 GPG 钥匙串,让它在指定的时间内为您记住密码)
服务器 SSH 守护进程配置存储在
/etc/ssh/sshd_config
SSH 客户端配置可以存储在
~/.ssh/config
SSH 的大部分问题都与身份验证有关,如果遇到任何问题,您应该尝试使用
ssh
命令连接到远程计算机并添加-vvv
选项以显示详细消息,尝试说明原因,并将结果包含在 StackExchange 或 AskUbuntu 上的问题中,如果您无法自己识别问题以上内容描述了默认或典型场景,
rsync
可能配置为使用不同的传输协议或直接通过 TCP 使用rsync://
地址;SSH 可以配置大量影响操作的设置