SFTP是基于SSH的文件传输协议,是一种安全的文件传输协议,通过加密的SSH连接来访问,管理和传输文件。
与传统的FTP协议相比更加安全,SFTP提供了FTP的所有功能,并且更易于配置。
SFTP与仅允许文件传输的scp命令不同,SFTP允许您对远程文件执行一系列操作并恢复文件传输。在本教程中,我们将向您展示如何使用Linux sftp命令。
为了能够通过SFTP传输和管理文件,您必须具有远程系统的写入权限,传输大文件时,建议使用screen,tmux,nohup运行sftp命令。
SFTP架构是客户端-服务器模型架构。它是SSH的子系统,支持所有SSH身份验证机制。sftp没有自己独立的服务器端。SSH服务已经包含sftp服务。
你只需要在远程服务器上安装SSH服务,就可以使用sftp连接远程服务器。你可以参考我们的教程如何在Linux安装SSH服务。
虽然默认的配置是使用传统密码验证。但易于使用。但如果您经常通过SSH/SFTP连接到服务器,建议如何设置ssh无密码登录。
你可使用sftp
命令打开与远程系统的SFTP连接,后跟远程服务器用户名和IP地址或域名。
如果您使用的是密码验证,系统将提示您输入用户密码。连接后,远程服务器将显示确认消息和sftp>
提示符。
如果你的SSH服务器未监听默认端口22,请使用oPort
选项指定端口。
sftp remote_username@server_ip_or_hostname
sftp -oPort=custom_port remote_username@server_ip_or_hostname #指定端口
Connected to remote_username@server_ip_or_hostname.sftp>
SFTP命令
大多数SFTP命令与您在Linux shell使用的命令类似或相同。您可在sftp>
提示符下键入help
或?
获取所有可用SFTP命令的列表。
登录到远程服务器后,当前工作目录是远程用户家目录。你可以输入命令pwd
来查看当前的工作目录。
和你使用Linux时一样,你可以使用ls
命令列出文件和目录。使用cd
命令导航到另一个目录。
上述命令都用于导航和处理远程位置。sftp
提示符下还提供用于本地导航和文件管理的命令。理论上操作本地文件的命令只需要加上l
前缀即可。
例如,要打印本地工作目录,您可以运行命令lpwd
。SFTP还允许您执行一些基本的文件操作命令。以下是如何使用SFTP shell的一些示例。
例如使用df
命令显示远程系统磁盘使用情况的统计信息。mkdir
在远程服务器上创建一个新目录。
rename
重命名远程服务器上的文件,rm
删除远程服务器上的文件。rmdir
删除远程服务器上的目录,chmod
更改远程系统的文件权限。
chown
更改远程系统上文件的所有者,您必须为chown
和chgrp
命令提供用户标识。使用chgrp
命令更改远程文件组的所有者。
完成工作后,您可以通过键入bye
或quit
关闭连接。
lpwd #打印本地当前目录
lls #列出本地当前目录的文件
rename file_name new_file_name #重名远程文件
rm file_name #删除远程服务器文件
rmdir directory_name #删除远程服务器目录
chmod 644 file_name #改变文件权限
chown user file_name #改变文件所有者
chgrp group file_name #改变文件所属组
传输文件
SFTP允许您在两台计算机之间安全地传输文件。在大多数情况下,您将使用桌面SFTP客户端,如WinSCP或FileZilla连接到远程服务器下载或上传文件。
但是,当您在没有GUI的服务器上工作时,并且想要传输文件或希望对远程文件执行其他操作时,这时你就需要使用命令行模式。
登录到远程服务器后,当前工作目录是远程用户家目录。使用sftp
命令下载文件时,文件将下载到您键入sftp
命令时的目录中。
使用get
命令可从远程服务器下载单个文件,如果没有指定文件名称get将使用原始名称保存文件。如果要使用其他名称保存下载的文件,请在后面指定名称。
使用-r
选项可从远程系统下载目录,如果文件传输失败或中断,您可以使用reget
命令恢复它。reget
语法与get
语法相同。
get filename.zip #下载文件
get filename.zip local_filename.zip #自定义保存名称
get -r remote_directory #下载目录
reget filename.zip #断点续传
使用put
命令可将文件从本地目录上传到远程FTP服务器。如果要上传不在当前工作目录中的文件,请使用该文件的绝对路径。
put
命令选项跟get
命令选项是一样的。-r选项可让你上传本地目录到远程服务器。reput
命令恢复中断的上传。
put filename.zip #上传文件
put -r locale_directory #上传目录
reput filename.zip #恢复文件上传,断点续传
结论
在本教程中,您学习了如何使用sftp命令下载文件并将文件上传到远程SFTP服务器。