CentOS传输文件指南
在CentOS系统之间或与其他系统之间传输文件是日常操作中非常普遍的需求,本文将详细介绍如何使用SSH(Secure Shell)及其相关工具进行安全、高效的文件传输,SSH是一种加密的网络协议,用于在不安全的网络中安全地远程登录和管理计算机系统,它不仅提供了远程登录功能,还支持文件传输,以下是几种常见的使用SSH传输文件的方法:

一、使用SCP命令传输文件
SCP(Secure Copy Protocol)是基于SSH的文件传输命令,可以用于在本地和远程主机之间安全地复制文件或目录。
1. 从本地向远程主机传输文件
要通过SCP将文件从本地机器传输到远程主机,可以使用以下命令:
- scp /path/to/local/file username@remote_host:/path/to/remote/directory
要将本地的file.txt
传输到IP地址为192.168.1.100
的远程机器的主目录下,使用以下命令:
- scp file.txt john@192.168.1.100:~/
2. 从远程主机向本地传输文件
要从远程主机下载文件到本地机器,可以使用以下命令:

- scp username@remote_host:/path/to/remote/file /path/to/local/directory
要从IP地址为192.168.1.100
的远程机器上下载file.txt
到本地目录,使用以下命令:
- scp john@192.168.1.100:~/file.txt /home/user/
3. 递归传输目录
SCP也支持递归传输目录,使用r
选项,要将整个目录dir
传输到远程主机,使用以下命令:
- scp r /path/to/local/dir username@remote_host:/path/to/remote/directory
二、使用SFTP传输文件
SFTP(SSH File Transfer Protocol)是另一种基于SSH的文件传输方式,与FTP类似,但所有数据传输都经过加密。
1. 启动SFTP会话
要启动SFTP会话,使用以下命令:
- sftp username@remote_host
连接到IP地址为192.168.1.100
的远程机器:
- sftp john@192.168.1.100
2. 上传和下载文件
连接建立后,可以使用put
命令上传文件,使用get
命令下载文件。
上传文件:
- put /path/to/local/file
下载文件:
- get /path/to/remote/file
3. 列出和更改目录
列出目录内容:
- ls
更改目录:
- cd /path/to/directory
三、使用rz和sz命令传输文件
rz
和sz
是一对基于Zmodem协议的文件传输命令,适用于Linux和Windows之间的文件传输,这些命令通常需要支持Zmodem的终端模拟器(如SecureCRT)。
1. 从Windows向Linux传输文件
在Linux端运行rz
命令,然后选择文件进行上传:
- rz
2. 从Linux向Windows传输文件
在Linux端运行sz
命令,指定要下载的文件:
- sz /path/to/remote/file
四、高级功能和配置
1. 保留文件权限和时间戳
使用SCP的p
选项可以在传输文件时保留文件的修改时间和访问权限:
- scp p /path/to/local/file username@remote_host:/path/to/remote/directory
2. 递归复制整个目录
使用SCP的r
选项可以递归复制整个目录:
- scp r /path/to/local/dir username@remote_host:/path/to/remote/directory
3. 生成和使用密钥对进行无密码登录
为了简化频繁的文件传输过程,可以使用SSH密钥对进行认证:
生成密钥对:
- sshkeygen
将公钥复制到远程主机:
- sshcopyid username@remote_host
这样以后就可以无需输入密码进行SSH连接和文件传输了。
五、常见问题及解答(FAQ)
Q1: 如何更改SCP的默认端口?
A1: SCP使用SSH的默认端口22进行通信,如果需要更改端口,可以在远程主机的SSH配置文件中修改端口号(通常是/etc/ssh/sshd_config
),然后在本地使用P
选项指定新端口号。
- scp P new_port /path/to/local/file username@remote_host:/path/to/remote/directory
Q2: 如何在脚本中使用SCP进行文件传输?
A2: 在脚本中使用SCP进行文件传输时,可以直接将SCP命令写入脚本,创建一个名为transfer.sh
的脚本:
- #!/bin/bash
- scp /path/to/local/file username@remote_host:/path/to/remote/directory
赋予执行权限并运行脚本:
- chmod +x transfer.sh
- ./transfer.sh
这样可以自动化文件传输过程。