用于 Linux 文件传输的 10 个必须了解的 sFTP 命令

文件传输协议(文件传输协议)曾经是一种广泛使用的远程传输文件或数据的方法。然而,它以未加密的格式传输信息,使其成为一种不安全的通信方式。

众所周知,文件传输协议不安全,因为所有传输都以明文形式进行,这意味着任何嗅探网络数据包的人都可以轻松读取数据。

因为这,文件传输协议仅应在有限的情况下或在您完全信任的网络上使用。随着时间的推移,协议如和通过引入加密层来解决这些安全问题。

[您可能还喜欢:]

FTP协议(安全文件传输协议)是一部分SSH在标准端口上运行 SSH 协议的协议套件22默认情况下建立安全连接。 SFTP 已集成到许多 GUI 工具中,例如文件齐拉,WinSCP, 和火力FTP

您可以访问FTP协议从 Linux 终端使用sftp命令,通常预先安装在。

which sftp

如果返回类似的路径/usr/bin/sftp,你可以走了。

安全警告: 请不要暴露SSH(安全外壳)端口到公共互联网,因为这会带来安全风险。相反,仅允许来自将用于传输或管理远程系统上的文件的特定 IP 地址的访问。

相关文章:

这篇文章将带您了解现实世界FTP协议命令示例,从登录和导航目录到上传和下载文件。我们还将介绍使用 sFTP 进行批量传输、脚本编写和自动化技巧。

1. 如何连接SFTP

默认情况下,使用相同的 SSH 协议来验证和建立 SFTP 连接。要启动 SFTP 会话,请在命令提示符下输入用户名和远程主机名或 IP 地址。

身份验证成功后,您将看到一个带有以下内容的 shellsftp>迅速的。

sftp 

如果 SSH 在自定义端口上运行(例如2222), 使用:

sftp -oPort=2222 
sFTP远程连接

曾经,你在sftp 提示符,输入 ' 检查可用命令?' 或者 'help' 在命令提示符下。

sftp> ?
sFTP 帮助和用法

2.检查当前工作目录

当您通过以下方式连接到远程服务器时FTP协议,了解您所在的位置非常重要 – 本地(在您自己的计算机上)和远程(在服务器上)。 sFTP 为此提供了两个简单的命令:lpwdpwd

命令lpwd(本地打印工作目录) 用于显示您正在工作的计算机上的当前本地目录。另一方面,命令pwd(打印工作目录) 显示远程服务器上的当前目录。

以下是它们在活动 sFTP 会话中的外观:

sftp> lpwd
Local working directory: /
sftp> pwd
Remote working directory: /tecmint/
  • lpwd帮助您验证文件将下载到哪里。
  • pwd帮助您确认文件将从哪里上传。

当您在文件传输期间导航多个目录时,了解这些命令特别有用。

3. 使用 sFTP 列出文件

一旦您使用以下命令连接到远程服务器FTP协议,您经常需要浏览目录来检查远程系统和本地计算机上的可用文件。

要列出远程服务器上的文件,只需使用,这将显示远程主机上当前目录的内容。

sftp> ls

如果您想查看详细的文件信息,例如大小和权限,您还可以使用-l选项:

sftp> ls -l

现在,如果您想列出本地系统(运行 sFTP 的计算机)上的文件,您将使用lls命令,其行为类似于常规命令ls命令但显示本地目录的内容。

sftp> lls

您还可以将选项传递给lls以长格式列出文件:

sftp> lls -l

使用lslls一起帮助您在 sFTP 界面内有效地管理本地和远程系统之间的文件。

🔒专业提示:厌倦了一遍又一遍地运行相同的 Linux 命令?了解如何使用我们的工具实现自动化Bash 脚本编写初学者课程并开始创建脚本以节省时间并简化您的日常任务。

4.使用sFTP上传文件

使用 sftp 命令连接到远程服务器后,您可以使用put上传文件的命令。例如,假设您有一个名为local.profile在本地计算机上,并且您想将其传输到远程服务器。

put local.profile

当您运行此命令时,sFTP 会将文件从当前本地目录上传到远程服务器上的当前目录。

您应该看到类似于以下内容的输出:

Uploading local.profile to /home/username/local.profile

如果要一次上传多个文件,可以在 mput 命令中使用通配符。例如,上传所有.txt当前本地目录中的文件:

mput *.txt

提示:在上传之前,最好使用以下命令检查并设置本地和远程工作目录:lcdcd分别命令。

例如:

lcd /home/user/documents
cd /var/www/html
put index.html

5.使用sFTP下载文件

要将单个文件从远程系统下载到当前本地目录,请使用get命令后跟文件名。

sftp> get SettlementReport_1-10th.xls

如果您想一次下载多个文件,您可以使用mget命令,当您处理大量报告、日志或数据文件时,该命令特别有用:

sftp> mget *.xls

mget 命令使用通配符模式,例如*.xls抓取所有文件.xls从远程目录扩展名并将它们复制到本地工作目录中。

6. 使用 sFTP 下载时重命名文件

默认情况下,get命令使用其原始名称下载文件。但是,如果您希望在本地以不同的名称保存文件,则可以指定具有所需名称的第二个参数。

sftp> get SettlementReport_1-10th.xls Report_Jan.xls

在这种情况下,远程文件SettlementReport_1-10th.xls将被下载并保存在本地Report_Jan.xls

7. 在 sFTP 中切换目录

要更改远程目录(您连接到的服务器上的目录),请使用接下来是所需的路径。

sftp> cd test

您可以通过运行以下命令来验证您在远程系统上的当前位置:

sftp> pwd

同样,要切换到不同的本地目录(当前计算机的文件系统),请使用lcd命令:

sftp> lcd Documents

要确认本地目录更改,您可以运行:

sftp> lpwd

8. 使用 sFTP 创建目录

要在远程服务器上创建新目录,您可以使用从 sFTP 提示符中:

mkdir test

该命令创建一个名为test在远程服务器上的当前工作目录中。然后您可以使用以下命令将文件上传到该目录中put,或使用以下命令更改为cd

另一方面,如果您想在 sFTP 会话中在本地计算机上创建目录,请使用lmkdir命令:

lmkdir Documents

这会创建一个名为的目录Documents在您当前的本地工作目录中。您可以在使用以下命令将多个文件下载到专用文件夹之前使用此命令:mget命令。

9. 使用 sFTP 删除目录

要删除文件,请使用在 sFTP 提示符内。例如,如果您要删除名为Report.xls从当前远程目录运行:

rm Report.xls

要删除目录,请使用rmdir命令。

rmdir sub1

重要提示:sFTP只能删除空目录。如果目录包含文件或子目录,您需要首先使用删除这些内容rm,或使用其他工具递归删除它们,例如SSH或者。

因此,在删除任何目录之前,请确保它是空的。否则,rmdir命令将失败并出现如下错误:

rmdir failed: Directory not empty

将 sFTP 与 SSH 密钥结合使用(无密码提示)

如果您想避免每次通过 sFTP 连接时都输入密码,您可以在本地计算机上使用 SSH 密钥对设置基于 SSH 密钥的身份验证。

ssh-keygen -t rsa -b 4096

您只需按Enter接受默认文件位置(~/.ssh/id_rsa)并可选择设置密码,这将生成两个文件: 私钥(id_rsa)和一个公钥(id_rsa.pub)

接下来,使用以下命令将您的公钥复制到远程服务器:

ssh-copy-id user@remote_host

完成后,您可以使用 sFTP 连接到服务器,而无需输入密码:

sftp user@remote_host

10. 退出 sFTP Shell

要退出 sFTP shell 并结束与远程服务器的会话,您只需键入:

bye
Or
exit

但您还应该了解另一个有用的技巧。

如果您位于 sFTP 会话中并且需要暂时进入本地 Linux shell,而不断开与远程 sFTP 会话的连接,则可以使用!命令,它可以让你运行直接来自 sFTP 环境。

sftp> !

现在您可以运行任何常规 Linux 命令。

ls -l

使用完本地 shell 并想要返回到 sFTP 提示符后,只需键入:

exit

运行后exit,您将返回到 sFTP 会话,如下所示:

exit
Shell exited with status 1
sftp>

最后,当您准备好完全离开 sFTP 会话时,请运行:

sftp> bye
结论

SFTP是一个非常有用的工具,用于管理服务器和与 (当地的偏僻的)。我们希望这些示例能够帮助您了解SFTP在某种程度上。