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/file3. 列出和更改目录
列出目录内容:
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
这样可以自动化文件传输过程。
