如何使用SFTP命令来传输文件
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
使用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命令下载文件
要从远程服务器下载一个单一的文件,使用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
用以下方法改变一个远程文件的组所有者。
chgrp group_id file_name
一旦你完成了你的工作,通过键入bye
或quit
来关闭连接。
总结
在本教程中,我们向你展示了如何使用sftp
命令来下载和上传文件到你的远程SFTP服务器。
你可能还想设置一个SSH基于密钥的认证,在不输入密码的情况下连接到你的Linux服务器。如果你经常连接到相同的系统,你可以通过在SSH配置文件中定义所有的连接来简化你的工作流程。
如果您有任何问题或反馈意见,请随时留下评论。