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

・9 分钟阅读

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

传统的FTP协议相比,SFTP提供了FTP的所有功能,并且易于配置。

只允许文件传输的scp command不同,sftp命令允许你对远程文件执行一系列操作并恢复文件传输。

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

在开始之前

要通过SFTP传输和管理文件,你必须对远程系统有写权限,

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

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

建立SFTP连接

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

尽管默认情况下会设置传统密码身份验证并且易于使用,但是如果您定期通过SSH/SFTP连接到服务器,建议您创建SSH密钥并设置无密码SFTP登录。

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

sftp remote_username@server_ip_or_hostname

如果使用密码身份验证连接到主机,系统将提示你输入用户密码。

连接后,将看到sftp提示符,你可以开始与远程计算机交互:


Connected to remote_username@server_ip_or_hostname.
sftp>

如果远程SSH服务器未侦听默认端口22,请使用-oPort选项指定备用端口:


sftp -oPort=custom_port remote_username@server_ip_or_hostname

SFTP命令

大多数SFTP命令与您在Linux Shell提示符中使用的命令相似或相同。

通过键入help?,你可以获得所有可用的SFTP命令的列表。

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

使用SFTP导航

当你登录到远程服务器时,你的当前工作目录是远程用户的主目录,可以通过键入以下命令检查:

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连接到远程服务器并下载或上传文件。

在没有GUI的服务器上工作时,sftp命令非常有用,并且希望传输文件或对远程文件执行其他操作。

使用SFTP命令下载文件

登录到远程服务器后,当前工作目录为远程用户主目录。

使用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

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

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配置文件。

如果你有问题或反馈,请随时留言。

讨论
Syq2803 profile image