Linux `rcp` 命令详解
🐧 Linux rcp 命令详解
学习目标
- 理解
rcp(Remote Copy)命令的基本功能及其工作原理 - 掌握如何在不同主机之间安全地复制文件与目录
- 能够结合
.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 包,但默认关闭相关服务 |
| 注意 | 现代系统通常以 scp 或 rsync 替代 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)
| 问题 | 解答 |
|---|---|
rcp 和 scp 有什么区别? |
rcp 使用 RSH,不加密;scp 使用 SSH,安全 |
如何启用 rsh 服务? |
Ubuntu: sudo apt install rsh-serverCentOS: sudo yum install rsh-server |
rcp 是否能跨平台使用? |
Windows 上可通过 Cygwin 或 WSL 使用 |
rcp 能否断点续传? |
不支持,建议使用 rsync |
📌 九、总结
虽然 rcp 命令已经逐渐被更安全的 scp 和 rsync 所取代,但在某些特定场景(如局域网内的快速复制、旧系统维护)中仍具有一定价值。掌握 rcp 的使用不仅可以帮助你理解早期网络文件传输机制,还能让你在面对遗留系统时更加得心应手。
💡 提示:如果你正在学习网络安全相关内容,可以尝试使用
tcpdump抓包分析rcp通信过程,观察其明文传输特性。示例:
sudo tcpdump -i eth0 -w rcp_traffic.pcap host remote_host_ip
如有追加问题,请输入:追加问题:xxxx

浙公网安备 33010602011771号