使用 scp和rsync 通过 SSH 进行加密传输文件,所有数据,包括文件名、目录结构和文件内容,都是加密的。因此,在传输过程中,网络服务商和任何中间人都无法看到这些信息。 首先需要配置SSH密钥 SSH 密钥认证通常只需要在一台服务器上进行配置,具体取决于你希望实现的访问方向。以下是详细说明: 情况一:单向访问 如果你只需要从一台服务器(例如 ServerA)访问另一台服务器(例如 ServerB),你只需要将 ServerA`的公钥复制到 ServerB。 步骤: 1. 在 `ServerA` 上生成 SSH 密钥对(如果还没有生成): ssh-keygen 默认情况下,这将在用户的 ~/.ssh/ 目录中生成 id_rsa(私钥)和 id_rsa.pub(公钥)文件。 2. 将 `ServerA` 的公钥复制到 `ServerB: ssh-copy-id root@192.168.0.2 这会将 ServerA 上的 ~/.ssh/id_rsa.pub 公钥复制到 ServerB 的 ~/.ssh/authorized_keys`文件中。 3. 验证无密码访问: 在 ServerA上尝试 SSH 连接 ServerB: ssh root@192.168.0.2 如果配置正确,你应该能够无密码访问 ServerB。 情况二:双向访问 如果你希望两台服务器相互访问(例如 ServerA 访问 ServerB,并且 ServerB`也能访问 ServerA),你需要在两台服务器上都进行密钥复制。 步骤: 1. 在两台服务器上生成 SSH 密钥对: – 在 ServerA`上: ssh-keygen – 在 ServerB上: ssh-keygen ssh-keygen 2. 将 ServerA 的公钥复制到 ServerB**: – 在 ServerA上: ssh-copy-id root@192.168.0.2 3. 将 ServerB 的公钥复制到 ServerA: – 在 ServerB上: ssh-copy-id root@192.168.0.1 4. 验证双向无密码访问: – 在 ServerA 上尝试 SSH 连接 ServerB: ssh root@192.168.0.2 – 在 ServerB 上尝试 SSH 连接 ServerA: ssh root@192.168.0.1 配置总结 – 单向访问:只需将源服务器的公钥复制到目标服务器。 – 双向访问:需要在两台服务器上分别生成密钥对,并将各自的公钥复制到对方的 `authorized_keys` 文件中。 使用scp 使用 SSH 隧道加密传输【远程服务器传输,从A服务器传输数据到B服务器】 scp -r /www/wwwroot/123/ root@192.168.0.2:/www/wwwroot/456/ 使用 SSH 隧道加密传输【本地服务器拉取远程服务器,从其他服务器拉取数据到本地服务器】 scp -r root@192.168.0.2:/www/wwwroot/456/ /www/wwwroot/123/ 使用rsync 【推荐使用这个传输比较稳定】 安装rsync Ubuntu或Debian系统 sudo apt update sudo apt install rsync CentOS或Fedora系统 sudo yum update sudo yum install rsync 加密传输【远程服务器传输,从A服务器传输数据到B服务器】 rsync -avz -e "ssh -v" /www/wwwroot/123/ root@192.168.0.2:/www/wwwroot/456/ 增量拉取 rsync -avz --progress -e ssh /www/wwwroot/123/ root@192.168.0.2:/www/wwwroot/456/ 带端口和普通用户方式 rsync -avz -e "ssh -v -p 223" /www/wwwroot/123 abc@192.168.0.2:/www/wwwroot/456/ 本地服务器拉取远程服务器【本地服务器拉取远程服务器,从其他服务器拉取数据到本地服务器】 rsync -avz -e ssh root@192.168.0.2:/www/wwwroot/456/ /www/wwwroot/123/ 确保文件传输稳定使用下面这个 rsync -avz --progress --partial --ignore-errors --checksum --ignore-existing -e "ssh -p 22" root@192.168.0.2:/www/wwwroot/456//home/www/192.168.0.1/123/ 增量拉取 rsync -avz --progress -e ssh root@192.168.0.2:/www/wwwroot/456/ /www/wwwroot/123/