如何使用SFTP命令传输文件

SFTP(SSH文件传输协议)是一种安全文件协议,用于通过加密的SSH传输访问,管理和传输文件。

与传统的FTP协议相比,SFTP提供了FTP的所有功能,但更安全,更易于配置。

与仅支持文件传输的SCP不同,SFTP允许您对远程文件执行一系列操作并恢复文件传输。

在本教程中,我们将向您展示如何使用Linux sftp 命令。

在你开始之前 #

为了能够通过SFTP传输文件,您必须在远程系统上具有写权限。

传输大文件时,建议运行 sftp 屏幕或tmux会话中的命令。

您运行的目录 sftp command是本地工作目录。

不要将SFTP与FTPS混淆。 两种协议具有相同的目的。 但是,FTPS代表FTP安全,它是对标准FTP协议的扩展,支持TLS。

建立SFTP连接#

SFTP在客户端-服务器模型上工作。 它是SSH的子系统,并支持所有SSH身份验证机制。

要打开与远程系统的SFTP连接,请使用 sftp 命令,然后是远程服务器用户名和IP地址或域名:

sftp [email protected]_ip_or_hostname

如果要使用密码验证连接到主机,则将提示您输入用户密码。

连接后,您将看到 sftp 提示,然后您就可以开始与远程服务器进行交互了:

Connected to [email protected]_ip_or_hostname.
sftp>

如果远程SSH服务器未在默认端口22上侦听,请使用 -P 指定SFTP端口的选项:

sftp -P custom_port [email protected]_ip_or_hostname

SFTP命令

大多数SFTP命令与Linux Shell命令相似或相同。

要获取所有可用的SFTP命令的列表,请键入 help, 要么 ?

help

这将输出所有可用命令的长列表,包括每个命令的简短描述:

Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
...
...
version                            Show SFTP version
!command                           Execute 'command' in local shell
!                                  Escape to local shell
?                                  Synonym for help

当您登录到远程服务器时,当前的工作目录是远程用户的主目录。 您可以通过输入以下内容进行检查:

pwd
Remote working directory: /home/remote_username

要列出文件和目录,请使用 ls 命令:

ls

要导航到另一个目录,请使用 cd 命令。 例如,切换到 /tmp 您将输入的目录:

cd /tmp

上面的命令用于导航和在远程位置上工作。

SFTP Shell还提供用于本地导航,信息和文件管理的命令。 本地命令以字母开头 l

例如,要打印本地工作目录,请输入:

cd lpwd
Local working directory: /home/local_username

使用SFTP传输文件

SFTP允许您在两台计算机之间安全地传输文件。

如果在台式计算机上工作,则可以使用GUI SFTP客户端(如WinSCP或FileZilla)连接到远程服务器并下载或上传文件。

sftp 当您在没有GUI的服务器上工作并且想要传输文件或对远程文件执行其他操作时,该命令很有用。

使用SFTP命令下载文件

要从远程服务器下载单个文件,请使用 get 命令:

get filename.zip

输出应如下所示:

Fetching /home/remote_username/filename.zip to filename.zip
/home/remote_username/filename.zip                           100%   24MB   1.8MB/s   00:13

使用下载文件时 sftp,文件将下载到您输入的目录 sftp 命令。

如果要使用其他名称保存下载的文件,请指定新名称作为第二个参数:

get filename.zip local_filename.zip

要从远程系统下载目录,请使用递归 -r 选项:

get -r remote_directory

如果文件传输失败或被中断,则可以使用 reget 命令。

的语法 reget 与的语法相同 get

reget filename.zip

使用SFTP命令上传文件#

要将文件从本地计算机上传到远程SFTP服务器,请使用 put 命令:

put filename.zip

输出应如下所示:

Uploading filename.zip to /home/remote_username/filename.zip
filename.zip                          100%   12MB   1.7MB/s   00:06

如果要上传的文件不在当前工作目录中,请使用该文件的绝对路径。

使用时 put 您可以使用与 get 命令。

要上传本地目录,请输入:

put -r locale_directory

要恢复中断的上传:

reput filename.zip

使用SFTP进行文件操作

通常,要在远程服务器上执行任务,您将通过SSH连接到该服务器并使用Shell终端进行工作。 但是,在某些情况下,用户可能只有SFTP访问远程服务器。

SFTP允许您执行一些基本的文件操作命令。 下面是一些有关如何使用SFTP Shell的示例:

  • 获取有关远程系统磁盘使用情况的信息:

    df
            Size         Used        Avail       (root)    %Capacity
        20616252      1548776     18002580     19067476           7%
  • 在远程服务器上创建一个新目录:

    mkdir directory_name
  • 重命名远程服务器上的文件:

    rename file_name new_file_name
  • 删除远程服务器上的文件:

    rm file_name
  • 删除远程服务器上的目录:

    rmdir directory_name
  • 更改远程系统上文件的权限:

    chmod 644 file_name
  • 更改远程系统上文件的所有者:

    chown user_id file_name

    您必须将用户ID提供给 chownchgrp 命令。

  • 使用以下方法更改远程文件的组所有者:

    chgrp group_id file_name

完成工作后,通过键入以下内容来关闭连接 bye 要么 quit

结论#

在本教程中,我们向您展示了如何使用 sftp 命令下载文件并将其上传到远程SFTP服务器。

您可能还希望设置基于SSH密钥的身份验证并连接Linux服务器而不输入密码。 如果您定期连接到相同的系统,则可以通过在SSH配置文件中定义所有连接来简化工作流程。

如果您有任何疑问或反馈,请随时发表评论。

sftp ssh终端

Sidebar