Linux `rcp` 命令详解

🐧 Linux rcp 命令详解

学习目标

  1. 理解 rcp(Remote Copy)命令的基本功能及其工作原理
  2. 掌握如何在不同主机之间安全地复制文件与目录
  3. 能够结合 .rhosts/etc/hosts.equiv 文件配置信任关系,实现在不输入密码的情况下完成远程复制

核心重点(Key Points)

主题 内容
命令名称 rcp
功能 在本地和远程主机之间复制文件(类似 scp,但使用 RSH 协议)
底层机制 基于 RSH(Remote Shell)协议,不加密传输数据
安全性 不推荐用于生产环境(因无加密通信)
常见用途 局域网内快速复制(如旧系统维护、教学实验)
支持平台 多数 Linux 发行版支持(Ubuntu/CentOS/EulerOS),需安装 openssh-server 或 rsh-server

详细讲解

🔍 一、什么是 rcp 命令?

rcp 是 Linux 中一个用于远程复制文件的命令行工具,它类似于我们更熟悉的 scp,但使用的是 RSH(Remote Shell)协议,而不是 SSH。

⚠️ 注意:rcp 不会对传输的数据进行加密!这意味着在网络中传输的内容可能被监听或篡改。

因此,rcp 更适用于:

  • 局域网内部通信
  • 教学演示
  • 遗留系统的维护任务

🛠 二、安装与查看版本

默认大多数现代 Linux 系统已不再预装 rcp,需要手动安装:

Ubuntu / Debian

sudo apt update
sudo apt install rsh-client

CentOS / RHEL

sudo yum install rsh

EulerOS / openEuler

sudo dnf install rsh

查看版本:

rcp -V
# 输出示例:OpenBSD rcp (portable) 20210514

⚠️ 实际上,在很多发行版中 rcp 是由 OpenSSH 提供的一个兼容性链接,实际行为可能与标准 rcp 不同!


📚 三、基本语法与常见参数

rcp [OPTIONS]... source target
参数 含义说明
-p 保留源文件的时间戳和权限
-r 递归复制整个目录
-x 启用 Kerberos 加密(若配置了相关服务)
-l 设置带宽限制(单位为 Kbit/s)

🎯 四、实战场景与案例解析

✅ 场景1:从本地复制文件到远程主机(基础用法)

rcp localfile.txt user@remote_host:/home/user/

👀 假设你在局域网中有一台名为 server1 的机器,并且已经配置了 .rhosts 文件授权访问。


✅ 场景2:从远程主机复制文件到本地

rcp user@remote_host:/var/log/syslog .

将远程服务器上的 syslog 日志复制到当前目录。


✅ 场景3:复制整个目录(使用 -r 参数)

rcp -r /local/dir user@remote_host:/remote/dir/

📁 适用于一次性迁移整个项目或备份日志目录。


✅ 场景4:保留时间戳和权限(使用 -p

rcp -p config.conf user@remote_host:/etc/app/

🕒 保持原文件的修改时间和权限信息,适合部署脚本或备份恢复。


🔐 五、免密码登录配置(信任机制)

为了实现无需输入密码即可执行 rcp,你需要设置以下两个文件之一:

方法1:.rhosts 文件(用户级信任)

在远程主机的用户主目录下创建 .rhosts 文件:

echo "trusted_host username" >> ~/.rhosts
chmod 600 ~/.rhosts

例如:

echo "192.168.1.100 alice" >> ~/.rhosts

表示允许来自 IP 为 192.168.1.100 的用户 alice 无需密码访问本机。


方法2:/etc/hosts.equiv 文件(全局信任)

在远程主机的 /etc/hosts.equiv 中添加信任关系:

echo "192.168.1.100 alice" >> /etc/hosts.equiv

⚠️ 此方式风险较高,建议仅用于测试或隔离网络环境。


🧪 六、不同发行版之间的差异与注意事项

发行版 特点
Ubuntu 默认未安装 rcp,需手动安装 rsh-client
CentOS 7/8 可通过 yum install rsh 安装
EulerOS/openEuler 支持安装 rsh 包,但默认关闭相关服务
注意 现代系统通常以 scprsync 替代 rcp,因其更安全可靠

🧰 七、进阶技巧与工具配合使用

🔗 配合 find 批量复制符合条件的文件

find /logs -name "*.log" -exec rcp {} user@backup_server:/backup/logs/ \;

📦 自动将所有 .log 文件上传至远程备份服务器。


🔄 使用 watch 命令定时同步文件

watch -n 300 'rcp -r /data user@remote:/backup/data'

🕒 每 5 分钟自动同步一次数据,适合监控类任务。


📈 配合 diffstat 查看远程与本地文件差异

rcp user@remote:/remote/file.txt . && diff local_file.txt file.txt | diffstat

📊 快速了解远程文件与本地是否有改动。


🧠 八、常见问题解答(FAQ)

问题 解答
rcpscp 有什么区别? rcp 使用 RSH,不加密;scp 使用 SSH,安全
如何启用 rsh 服务? Ubuntu: sudo apt install rsh-server
CentOS: sudo yum install rsh-server
rcp 是否能跨平台使用? Windows 上可通过 Cygwin 或 WSL 使用
rcp 能否断点续传? 不支持,建议使用 rsync

📌 九、总结

虽然 rcp 命令已经逐渐被更安全的 scprsync 所取代,但在某些特定场景(如局域网内的快速复制、旧系统维护)中仍具有一定价值。掌握 rcp 的使用不仅可以帮助你理解早期网络文件传输机制,还能让你在面对遗留系统时更加得心应手。


💡 提示:如果你正在学习网络安全相关内容,可以尝试使用 tcpdump 抓包分析 rcp 通信过程,观察其明文传输特性。

示例:

sudo tcpdump -i eth0 -w rcp_traffic.pcap host remote_host_ip

如有追加问题,请输入:追加问题:xxxx

posted @ 2025-06-23 22:46  红尘过客2022  阅读(104)  评论(0)    收藏  举报