如何使用SFTP命令来传输文件

评论 0 浏览 0 2018-11-18

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

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

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

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

在你开始之前

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

当传输大文件时,建议在屏幕tmux会话内运行sftp命令。

你运行sftp命令的目录是本地工作目录。

不要混淆SFTP和FTPS。这两个协议的目的是一样的。然而,FTPS代表FTP安全,它是对标准FTP协议的扩展,支持TLS。

建立一个SFTP的连接

SFTP在客户-服务器模式下工作。它是SSH的一个子系统,支持所有SSH认证机制。

要打开一个与远程系统的SFTP连接,请使用sftp命令,后面跟上远程服务器的用户名和IP地址或域名。

sftp remote_username@server_ip_or_hostname

如果你使用密码认证连接到主机,你会被提示输入用户密码。

一旦连接,你将看到sftp的提示,你可以开始与远程服务器进行交互。

输出

Connected to remote_username@server_ip_or_hostname.
sftp>

如果远程SSH服务器没有在默认端口22上监听,请使用-P选项来指定SFTP端口。

输出

sftp -P custom_port remote_username@server_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客户端,如WinSCPFileZilla来连接到远程服务器并下载或上载文件。

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

用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

    你必须向chownchgrp命令提供用户的ID。

  • 用以下方法改变一个远程文件的组所有者。

    chgrp group_id file_name

一旦你完成了你的工作,通过键入byequit来关闭连接。

总结

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

你可能还想设置一个SSH基于密钥的认证,在不输入密码的情况下连接到你的Linux服务器。如果你经常连接到相同的系统,你可以通过在SSH配置文件中定义所有的连接来简化你的工作流程。

如果您有任何问题或反馈意见,请随时留下评论。

最后更新2023-09-16
0 个评论
标签