通过 SSH 在 Linux 机器之间传输文件
简介
通过 SSH 在 Linux 机器之间传输文件是系统管理员和开发人员的一项常见任务。SSH(**安全外壳**)是一种协议,允许您在机器之间安全地传输文件,以及远程访问和管理它们。在本文中,我们将探讨通过 SSH 传输文件不同的方法,并通过示例和命令演示该过程。
设置 SSH
在您能够通过 SSH 传输文件之前,您需要在源机器和目标机器上都设置 SSH。SSH 是一种安全的通信协议,允许您远程访问和管理您的 Linux 机器。它在两台机器之间创建了一个**加密隧道**,保护您的数据免受窃听和篡改。
您可以通过运行以下命令检查**SSH**是否已安装在您的机器上:
$ ssh -v
如果输出显示**SSH**的版本,则表示它已安装。否则,您可以使用发行版的包管理器安装它。
$ sudo apt-get install ssh # on Ubuntu $ sudo yum install ssh # on CentOS
安装 SSH 后,您可以启动 SSH 服务并将其配置为远程访问。
$ sudo service ssh start # on Ubuntu $ sudo systemctl start ssh # on CentOS
SCP(安全复制)
**SCP(安全复制)**是一个命令行实用程序,允许您通过 SSH 在机器之间安全地传输文件。SCP 的语法类似于常规的**cp**命令,但增加了“-scp”选项。
要将文件从本地机器复制到远程机器,请使用以下语法:
$ scp [source file] [user]@[destination host]:[destination path]
例如,要将名为“file.txt”的文件从本地机器复制到 IP 地址为“192.168.1.100”的远程机器,并将其保存在用户“john”的主目录中,请使用以下命令:
$ scp file.txt [email protected]:~/
要将文件从远程机器复制到本地机器,请使用以下语法:
$ scp [user]@[source host]:[source path] [destination file]
例如,要将名为“file.txt”的文件从 IP 地址为“192.168.1.100”的远程机器复制到本地机器的主目录中,请使用以下命令:
$ scp [email protected]:~/file.txt ~
SCP 是快速复制机器之间单个文件的绝佳工具,但是如果您需要传输多个文件或整个目录,使用 SFTP 会更高效。
SFTP(安全文件传输协议)
通过 SSH 传输文件的另一种方法是通过**SFTP**(安全文件传输协议)。SFTP 类似于 FTP(文件传输协议),但它使用 SSH 加密数据传输。
要使用**SFTP**传输文件,您首先需要使用以下命令与远程机器打开 SFTP 会话:
$ sftp [user]@[host]
例如,要与 IP 地址为“192.168.1.100”且用户为“john”的远程机器打开**SFTP**会话,请使用以下命令:
$ sftp [email protected]
例如,要与 IP 地址为“192.168.1.100”且用户为“john”的远程机器打开 SFTP 会话,请使用以下命令:
$ sftp [email protected]
连接后,您可以使用以下 SFTP 命令传输文件:
**put [源文件] [目标文件]** - 将文件从本地机器上传到远程机器
**get [源文件] [目标文件]** - 将文件从远程机器下载到本地机器
**ls** - 列出远程机器当前目录中的文件
**lls** - 列出本地机器当前目录中的文件
**cd [目录]** - 更改远程机器上的当前目录
**lcd [目录]** - 更改本地机器上的当前目录
高级功能
对于更复杂的文件传输场景,您可以使用**SCP**和**SFTP**的许多高级功能。例如,您可以将 SCP 与“-p”选项一起使用以保留文件的权限和时间戳,或者使用“-r”选项递归复制整个目录。此外,您可以使用**ssh-keygen**生成密钥对,该密钥对可用于在**无需密码**的情况下对远程机器进行身份验证。
结论
通过**SSH**在 Linux 机器之间传输文件是管理和交换数据的安全有效方法。**SCP**和**SFTP**是用于通过 SSH 传输文件的两种常用工具。这两种工具都易于使用,并提供了一种安全的数据传输方式。通过遵循本文提供的命令和示例,您应该能够轻松地在 Linux 机器之间通过 SSH 传输文件。此外,您可以使用上面提到的高级功能来调整您的文件传输过程以满足您的特定需求。