如何用rcp在Linux间复制文件?

rcp 是 Unix/Linux 系统间远程复制文件的命令,语法类似 cp,但需指定远程主机名和目标路径,它使用 rsh 协议,因安全性低(明文传输)已被更安全的 scp 和 rsync 命令取代。

rcp(Remote Copy Protocol)是一个经典的 Unix/Linux 命令行工具,用于在本地主机与远程主机之间,或两台远程主机之间复制文件或目录,它基于 rsh(Remote Shell)协议工作,是早期网络环境中常用的文件传输工具。

重要安全提示 (⚠️ 必读):
rcp 和其依赖的 rsh 不加密传输的数据或登录凭证(用户名/密码),这意味着你的文件内容和密码在网络上以明文形式传输,极易被截获。在现代网络环境中(尤其是互联网或不受信任的网络),强烈建议使用更安全的替代方案:scp(基于 SSH)或 sftp。 仅在绝对安全、隔离的受控网络(如封闭的实验室网络)且了解风险的情况下才考虑使用 rcp。

基本语法格式

rcp [选项] 源文件/目录 目标文件/目录
  • 源文件/目录: 要复制的文件或目录路径。
  • 目标文件/目录: 复制后文件或目录的目标路径。

路径中指定远程主机:
在路径前加上 远程用户名@远程主机名: 或 远程主机名:(使用当前本地用户名登录远程主机)来指示远程位置。

常用选项

  • -p:保留(Preserve)源文件的修改时间、访问时间和权限模式(尽可能)。
  • -r:递归(Recursive)复制整个目录及其内容(用于复制目录时必须使用)。
  • -k:请求 Kerberos 认证(如果系统配置支持 Kerberos,可提供比明文密码稍好的安全性,但仍不如 SSH)。
  • -x:启用传输数据的 DES 加密(非常过时且脆弱,不提供实质安全,不推荐依赖)。

核心使用场景与示例

  1. 从本地复制文件到远程主机:

    rcp /path/to/local/file.txt username@remotehost:/path/to/remote/directory/
    • 将本地文件 file.txt 复制到远程主机 remotehost 上用户 username 的家目录下的 /path/to/remote/directory/ 目录中。
    • 如果省略 username@,rcp 会尝试使用你当前的本地用户名登录远程主机。
    • 目标路径末尾的 很重要,它表示目标是一个目录,如果省略且目录不存在,rcp 可能会尝试创建一个同名文件,通常会导致错误。
  2. 从远程主机复制文件到本地:

    rcp username@remotehost:/path/to/remote/file.txt /path/to/local/directory/
    • 将远程主机 remotehost 上用户 username 的 /path/to/remote/file.txt 文件复制到本地的 /path/to/local/directory/ 目录下。
  3. 在两台远程主机之间复制文件:

    rcp username1@sourcehost:/path/to/source/file.txt username2@destinationhost:/path/to/destination/
    • 将源主机 sourcehost 上用户 username1 的文件 file.txt 复制到目标主机 destinationhost 上用户 username2 的 /path/to/destination/ 目录下。
    • 执行此操作的主机(你运行命令的本地主机)需要能访问这两台远程主机,并且你在这两台远程主机上需要有相应的权限。
  4. 复制整个目录(递归复制):

    rcp -r /path/to/local/directory username@remotehost:/path/to/remote/parent/
    • 使用 -r 选项,将本地目录 /path/to/local/directory(包含其所有子目录和文件)递归复制到远程主机 remotehost 的 /path/to/remote/parent/ 目录下,复制后,远程目录路径将是 /path/to/remote/parent/directory/。
  5. 保留文件属性:

    rcp -p importantfile.conf username@remotehost:/etc/
    • 使用 -p 选项,在复制文件 importantfile.conf 到远程主机的 /etc/ 目录时,尽可能保留其原始修改时间、访问时间和权限位。

关键前提条件与配置

  1. rsh/rlogin 服务必须启用: 远程主机必须运行 rshd 或 rlogind 守护进程(通常在 inetd 或 xinetd 中配置)。出于安全原因,现代系统默认通常禁用这些服务。
  2. 主机信任关系: 需要在远程主机的用户家目录下配置信任关系文件:
    • ~/.rhosts: 列出允许访问的 主机名 用户名 对(一行一个),在 remotehost 上用户 username 的 ~/.rhosts 文件中添加 yourlocalmachine yourlocalusername,允许用户 yourlocalusername 从主机 yourlocalmachine 无需密码登录 remotehost 的 username 账户。
    • /etc/hosts.equiv (系统级): 管理员配置,信任整个主机上的所有用户(或特定用户),风险更高。
  3. 网络连通性: 本地主机与远程主机之间网络必须畅通,且远程主机的 rsh 端口(默认 TCP 514)未被防火墙阻止。
  4. 命令可用性: rcp 命令需要在本地主机和参与操作的远程主机上安装(通常是 rsh 或 openssh-client 包的一部分,但后者主要提供 scp/ssh)。

为什么强烈推荐 scp 或 sftp 替代 rcp?

  1. 加密: scp (Secure Copy) 和 sftp (SSH File Transfer Protocol) 基于 SSH (Secure Shell) 协议,对所有传输的数据(包括文件内容和登录凭证)进行强加密,有效防止窃听和中间人攻击。
  2. 认证: 支持更安全的公钥认证和强密码认证。
  3. 完整性: 确保传输的数据在过程中未被篡改。
  4. 功能: scp 语法与 rcp 高度相似,学习成本低。sftp 提供交互式文件管理功能。
  5. 可用性: SSH 服务 (sshd) 是现代 Unix/Linux 系统的标准配置,安全性高且默认启用。

scp 基本语法示例 (强烈推荐使用):

scp -p /path/to/local/file.txt username@remotehost:/path/to/remote/directory/ # 复制到远程
scp -p -r username@remotehost:/path/to/remote/directory/ /path/to/local/ # 从远程复制目录
scp -p user1@host1:/file.txt user2@host2:/destination/ # 主机间复制

注意事项总结

  1. 首要安全警告: rcp 不安全! 仅在绝对可信、隔离的网络中使用,否则,务必使用 scp 或 sftp。
  2. 权限: 执行 rcp 的用户必须在源位置有读取权限,在目标位置有写入权限。
  3. 路径: 正确使用绝对路径或相对于用户家目录的路径( 在 rcp 命令中可能不会被远程 shell 正确解析,建议使用绝对路径)。
  4. 目录斜杠: 复制目录时,源目录名后不加斜杠复制的是目录本身;加斜杠复制的是目录内容,目标路径末尾加斜杠明确指定为目录。
  5. 配置复杂: 设置 .rhosts 或 hosts.equiv 需要谨慎,配置错误可能导致安全漏洞。
  6. 过时性: rcp 已被更安全、功能更丰富的工具(scp, sftp, rsync over SSH)广泛取代。

虽然 rcp 在历史上用于简单的远程文件复制,但其固有的安全性缺陷(明文传输) 使其在现代计算环境中极不推荐使用,理解 rcp 的语法和工作原理有助于阅读遗留脚本或文档,但在进行任何实际的远程文件操作时,应始终优先选择基于 SSH 的安全替代品 scp 或 sftp,它们提供了 rcp 的所有基本功能,并在此基础上增加了至关重要的加密和强认证机制,是保护系统和数据安全的必要实践。


引用与说明:

  • 基于 Unix System V 和 BSD 派生的 rcp 命令标准实现文档。
  • 安全警告依据 NIST (SP 800-123)、CIS 等机构关于安全 Shell 和淘汰不安全协议的建议。
  • scp/sftp 推荐依据 OpenSSH 项目文档及广泛认可的最佳安全实践。
  • 具体命令选项和行为的描述参考了 man rcp (手册页) 的核心内容。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4936.html

赞 (0)
酷番叔酷番叔
上一篇 2025年6月18日 19:38
下一篇 2025年6月18日 20:02

相关推荐

  • 安亭人脸识别系统在公共安全中的作用与隐私问题如何解决?

    安亭人脸识别系统作为上海市嘉定区安亭镇推进智慧城市建设的核心项目,近年来在提升城市治理效能、优化公共服务体验等方面发挥了重要作用,该系统依托人工智能、大数据、边缘计算等前沿技术,构建起覆盖全域、智能高效的身份识别与安全管理网络,为这座以汽车产业闻名的现代化城镇注入了数字化发展新动能,系统架构与技术支撑安亭人脸识……

    2025年11月14日
    17200
  • 路由器如何自动发现邻居设备?

    路由器内置的邻居发现协议可自动识别同一链路上的直连设备,实现地址解析、路由优化和状态监控,有效提升网络管理效率。

    2025年7月25日
    36800
  • au在Java中如何使用?

    在Java编程中,au并不是一个内置的关键字或标准库的缩写,但它在某些特定场景下可能被用作变量名、方法名或包名的一部分,为了更好地理解au在Java中的潜在用途和含义,本文将从变量命名规范、代码可读性、实际应用案例以及常见误区等方面展开详细讨论,au作为变量名的命名规范在Java中,变量名的命名需要遵循一定的规……

    2025年12月3日
    18900
  • 国内BI数据分析工具技术,现状与未来挑战是什么?

    国内BI技术现状是云原生与AI融合,未来挑战在于打破数据孤岛、保障安全及提升智能化深度。

    2026年2月27日
    17700
  • 安全众测价格如何制定才合理?

    市场现状、影响因素与成本优化策略在数字化时代,网络安全威胁日益复杂,企业对安全众测(众包安全测试)的需求持续增长,安全众测通过汇聚全球白帽黑客的力量,帮助企业发现潜在漏洞,降低安全风险,其价格体系因服务模式、测试范围、技术难度等因素差异较大,企业如何选择性价比高的服务成为关键,本文将深入分析安全众测的市场价格现……

    2025年11月23日
    25700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信