通过SSH在Linux机器之间传输文件
简介
在Linux机器之间通过SSH传输文件是系统管理员和开发者的一项常见任务。SSH( Secure Shell )是一个协议,它允许你在机器之间安全地传输文件,以及远程访问和管理它们。在这篇文章中,我们将探讨通过SSH传输文件的不同方法,并通过例子和命令演示这一过程。
设置SSH
在你通过SSH传输文件之前,你需要在源机器和目标机器上都设置SSH。SSH是一个安全通信协议,允许你远程访问和管理你的Linux机器。它在两台机器之间建立一个 加密的隧道 ,保护你的数据不被窃听和篡改。
You can check if SSH is already installed on your machine by running the following command −
$ 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 john@192.168.1.100:~/
要从远程机器复制一个文件到本地机器,请使用以下语法 —
$ scp [user]@[source host]:[source path] [destination file]
例如,要从IP地址为 “192.168.1.100 “的远程机器上复制一个名为 “file.txt “的文件,并将其保存在本地机器的主目录下,使用以下命令
$ scp john@192.168.1.100:~/file.txt ~
SCP是一个在机器之间快速复制单个文件的伟大工具,但如果你需要传输多个文件或整个目录,使用SFTP会更有效率。
SFTP(安全文件传输协议)
另一种通过SSH传输文件的方式是通过 SFTP (安全文件传输协议)。SFTP与FTP(文件传输协议)类似,但它使用SSH对数据传输进行加密。
要使用 SFTP 传输文件,你首先需要使用以下命令在远程机器上打开一个SFTP会话—-。
$ sftp [user]@[host]
例如,要与IP地址为 “192.168.1.100 “的远程机器和用户 “john “打开一个 SFTP 会话,使用以下命令
$ sftp john@192.168.1.100
例如,要与IP地址为 “192.168.1.100 “的远程机器和用户 “john “打开一个SFTP会话,使用以下命令
$ sftp john@192.168.1.100
一旦连接,你可以使用以下SFTP命令来传输文件
- put [源文件] [目标文件] – 从本地机器上传文件到远程机器
-
get [源文件] [目标文件] – 从远程机器下载一个文件到本地机器
-
ls – 列出远程机器上当前目录下的文件
-
lls – 列出本地机器上当前目录下的文件
-
cd [directory] – 改变远程机器上的当前目录
-
lcd [directory] – 改变本地机器上的当前目录
高级功能
你可以用 SCP 和 SFTP 的许多高级功能来处理更复杂的文件传输情况。例如,你可以使用SCP的’-p’选项来保留文件的权限和时间戳,或者使用’-r’选项来递归复制整个目录。此外,你可以使用 ssh-keygen 来生成一个密钥对,这可以用来验证远程机器 ,而不需要密码。
总结
在Linux机器之间通过 SSH 传输文件是一种安全和有效的管理和交换数据的方式。 SCP 和 SFTP 是两个常用的工具,用于通过SSH传输文件。这两个工具都很容易使用,并提供了一种安全的方式来传输数据。通过遵循本文提供的命令和例子,你应该能够轻松地在Linux机器之间通过SSH传输文件。此外,你可以使用上面提到的高级功能来定制你的文件传输过程,以满足你的具体需求。