今天就来学习使用Unix scp。您每天使用的标准网络服务(如 FTP、Telnet、RCP 和远程 Shell (rsh) 等)在封闭环境中运行良好,但使用这些服务在网络上传输的信息是未加密的。
任何人都可以在您的网络或远程计算机上使用包嗅探器查看交换的信息,有时甚至可以查看密码信息。下面就来学习下Unix scp的知识吧。
而且,使用所有此类服务时,在登录过程中用于自动登录的选项会受到限制,并且通常依赖于将纯文本密码嵌入到命令行才能执行语句,从而使登录过程变得更加不安全。
开发的安全 Shell (SSH) 协议可以排除这些限制。SSH 能够为整个通信通道提供加密,其中包括登录和密码凭据交换,它与公钥和私钥一起使用可以为登录提供自动化身份验证。
您还可以将 SSH 用作基础传输协议。以这种方式使用 SSH 意味着在打开安全连接后,加密通道可以交换所有类型的信息,甚至 HTTP 和 SMTP 可以使用该方法来保证通信机制的安全。
Unix OpenSSH 是 SSH 1 和 SSH 2 协议的免费实现。它最初是作为 OpenBSD (Berkeley Software Distribution) 操作系统的一部分开发的,现在被发布为 Unix 或 Linux® 和类似操作系统的常规解决方案。
Unix scp 命令的工作方式与 rc 命令相似,只不过是使用 SSH 协议传输文件。在传输内容相关文件或在 Internet 上自动交换文件时,选用Unix scp 要好得多。
其格式类似于 rcp;您可以指定之间复制的文件路径,必要时应将主机名合并到该路径。例如,要将 .bashrc 文件从远程主机复制到本地计算机,请使用: $ scp remotehost:/users/mc/.bashrc ~/.bashrc
和前面一样,若指定要使用的用户名,请在主机前面加上用户名,并用 @ 符号分开: $ scp mc@remotehost:/users/mc/.bashrc ~/.bashrc
假设您用于连接的用户有读取权限,还需要使用元字符 ~ 才能访问主目录中的信息。
$ scp mc@remotehost:~mc/.bashrc ~/.bashrc
要从登录用户的主目录中进行复制,请使用: $ scp mc@remotehost:.bashrc ~/.bashrc
Unix scp 命令还支持标准扩展规则。所以,要复制所有的 .bash* 文件,您可以使用: $ scp mc@remotehost:.bash* ~
您甚至还可以通过使用展开的大括号 ({}) 更具体地选择单个文件:$ scp mc@remotehost:".bash{rc,_path,_aliases,_vars}" ~
请注意,文件路径中展开的大括号(不是完整的远程路径表达式)已用双引号括上。
在上面所有的示例中,系统都会提示您输入远程主机的密码。通过为主机提供您自己的个人密钥的公共部分可以避免这种情况。
这些,就是我们要讲的使用Unix scp 在主机之间复制文件的知识。
【编辑推荐】