linux连接sftp服务器,如何使用SFTP与Linux服务器之间传输文件?

本文介绍了如何使用SFTP命令行工具在Linux和Windows系统之间进行文件传输,无需额外安装图形界面工具。通过命令行,用户可以直接在终端或命令提示符下登录服务器,下载、上传文件或目录,甚至恢复中断的传输。SFTP提供了一种方便且灵活的方式,特别是在需要更多控制或不想安装额外软件的情况下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3f9aa4b787707b58759d38b5525792be.png

【51CTO.com快译】大多数人需要与Linux/BSD服务器之间传输文件时,青睐FileZilla或WinSCP之类的实用程序。如果OpenSSH守护程序在该计算机上运行,​​可以通过SSH FTP协议(SFTP)连接到它。上述实用程序提供了图形界面,确实让用户更容易传输文件,不过得安装和配置这种程序。

一些纯粹主义者更喜欢不必安装额外的实用程序。其他人完全偏爱命令行,因为命令行提供了更大的控制权,并更快地告诉实用程序你希望它执行什么操作。但如果你想传输文件,现在多了一个使用命令行的理由。默认情况下,Windows 10含有OpenSSH客户软件,让你可以直接从命令提示符登录到Linux/ BSD服务器。

该客户软件还附带其他许多实用程序,其中包括SFTP。因此,你现在还可以直接从命令提示符将文件传输到Linux / BSD操作系统,没必要在Windows计算机上安装任何东西。

SFTP实用程序在Linux机器上也可以使用,用起来一样。

如何使用SFTP命令登录?

如果你使用Windows,打开命令提示符。如果使用Linux,打开终端窗口。

想使用SFTP命令登录到服务器,请使用与SSH命令一模一样的语法。如果你不熟悉该语法,请阅读简介段落中链接的教程。

sftp your_username@IP-address-or-hostname

示例性命令:

sftp john@203.0.113.1

sftp john@example.com

15473ff575b4b9618023c07a54acb268.png

图1

使用SFTP登录后如何下载文件?

现在你可以在sftp >提示符下输入命令,与服务器上的文件进行联系。

想下载文件:

get /path/to/file/on/server

示例:

get /bin/ls

这将下载到你的当前目录,即在登录到服务器之前所在的本地目录。想下载到某个特定的本地目录(Windows上):

get /path/to/file/on/server C:\path\to\local\folder

示例:

get /bin/ls C:\User\John\Desktop

在Linux上,你只要使用Unix类型路径(正斜杠而不是反斜杠):

get /bin/ls /home/john/Desktop

注意:就算你误将正斜杠用于Windows路径,SFTP这个实用程序似乎也能理解。

路径也可以是相对的。这意味着如果你打开命令提示符时已经在C:\User\John,可以用下列命令下载到你的桌面(C:\User\John\Desktop):

get /bin/ls Desktop

远程路径也可以是相对的,这意味着如果你用sftp john@203.0.113.1登录,你就已经在目录“/home/john”,所以可以使用该目录来下载“/home/john/file”。

get file Desktop

这会将“/home/john/file”下载到“C:\Users\YourUser\Desktop\file”。

若想拷贝目录,你得将-r参数添加到命令,这个参数代表递归。

get -r /bin Desktop\bin

ce5212c7dd4c99e8aa7dfa98cd585608.png

图2

记得为你想在本地创建的新目录添加名称,比如本文中的“Desktop\bin”。如果你想使用get -r /bin Desktop,文件将直接拷贝到Desktop。拷贝的是文件,而不是该目录本身。

如何在使用SFTP登录后上传文件?

上传文件或目录遵循同样的原则。例外就是,路径是反向的,这意味着你得先指定本地文件/目录,然后指定远程路径。

在Windows上:

put C:\path\to\local\content /path/where/to/upload

在Linux上:

put /path/to/local/content /path/to/remote/location

上传目录(递归)时,记住上面的那个规则同样适用:拷贝的实际上是目录中的文件,而不是目录本身。所以为你想要将那些文件拷贝过去的目录指定一个新的名称。

put -r Desktop/bin bin

这将在远端创建一个名为“bin”的新目录。

想退出SFTP外壳,只要输入:

exit

如何恢复传输,并使用含有空格的路径?

传输大文件时,如果传输出现中断,可以把前面的命令换成reput和reget(取代put和get),恢复传输。务必确保你使用的路径与上一次使用的一模一样,以便源端和目的地完全匹配。

reget /path/to/file/on/server C:\path\to\local\file

reput C:\path\to\local\file /path/to/file/on/server

想恢复目录传输,只要添加-r参数。

reput -r Desktop/bin bin

如果文件路径含有空格,把它放在引号里面。

这不行:

put C:\Program Files (x86)\Steam\steamapps\common\The Witcher 3\SOUNDTRACK\The_Witcher_3_Wild_Hunt_-_Official_Soundtrack_(steam_edition)_mp3.zip

但这行:

put "C:\Program Files (x86)\Steam\steamapps\common\The Witcher 3\SOUNDTRACK\The_Witcher_3_Wild_Hunt_-_Official_Soundtrack_(steam_edition)_mp3.zip"

(是的,如果你已安装在Steam上,实际上可以在上面找到Witcher 3的音轨。)

结束语

本文介绍了关于SFTP的最重要几点。如果你觉得需要了解更多的信息,可以在网上阅读完整的SFTP命令说明手册(http://man7.org/linux/man-pages/man1/sftp.1.html)。

原文标题:How to Use SFTP to Transfer Files to/from Linux Servers,作者:Alexandru Andrei

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值