如何使用sftp命令?操作步骤与文件传输技巧详解

sftp(Secure File Transfer Protocol)是一种基于SSH协议的安全文件传输工具,相较于传统的FTP,sftp通过加密传输数据(使用SSH的加密机制),有效避免了信息泄露和篡改风险,广泛应用于服务器文件管理、数据备份等场景,本文将详细介绍sftp命令的使用方法,包括连接服务器、文件传输、目录管理及权限控制等核心操作,帮助用户快速上手。

怎么使用sftp命令

连接远程服务器

使用sftp连接远程服务器前,需确保目标服务器已启用SSH服务(默认监听22端口,可通过-P参数自定义端口),基本连接格式为:sftp [用户名]@[主机名],以用户名user连接IP为168.1.100的服务器,命令为:

sftp user@192.168.1.100

执行后会提示输入该用户的SSH密码(若使用密钥认证,需提前配置免密登录,可通过ssh-keygen生成密钥,并将公钥添加到服务器的~/.ssh/authorized_keys文件中),连接成功后,会显示sftp提示符(通常为sftp>),此时可输入相关命令进行操作。

基本文件操作

连接后,首先需要确认当前目录和文件结构。ls命令用于列出远程目录下的文件及子目录,支持-l参数显示详细信息(如权限、大小、修改时间等),

ls -l /home/user/  # 查看远程用户目录下的详细文件列表

cd命令用于切换远程目录,用法与Linux终端一致,如:

cd documents  # 进入远程服务器的documents子目录

pwd命令则显示当前所在的远程目录完整路径,方便定位文件位置,需要注意的是,sftp默认进入用户的家目录(如/home/user/),可通过cd /切换到根目录。

文件传输

文件传输是sftp的核心功能,上传和下载分别通过putget命令实现,上传本地文件到远程服务器时,put命令的基本格式为:put [本地文件路径] [远程文件路径],将当前本地目录下的test.txt上传到远程服务器的/home/user/docs/目录,并重命名为remote.txt,命令为:

put test.txt /home/user/docs/remote.txt

若需上传整个目录,需添加-r参数(递归上传),如:

怎么使用sftp命令

put -r local_dir/ /home/user/remote_dir/  # 上传本地local_dir目录到远程remote_dir

下载远程文件到本地则使用get命令,格式为:get [远程文件路径] [本地文件路径],下载远程服务器上的data.zip到当前本地目录,命令为:

get data.zip ./

若需下载到指定目录,可完整指定路径,如:

get /home/user/docs/report.pdf /path/to/local/report.pdf

同样,-r参数可用于递归下载目录,如:

get -r remote_dir/ ./local_dir/  # 下载远程remote_dir目录到本地local_dir

目录与文件管理

除了文件传输,sftp还支持基本的目录和文件管理操作。mkdir命令用于创建远程目录,如:

mkdir new_folder  # 在当前远程目录下创建new_folder子目录

rmdir命令用于删除空目录,如:

rmdir empty_folder  # 删除远程empty_folder目录(需为空目录)

删除远程文件使用rm命令,如:

rm old_file.log  # 删除远程old_file.log文件

若需删除非空目录,需添加-r参数(rm -r non_empty_dir/),可通过rename命令重命名文件或目录,格式为:rename [旧名称] [新名称],如:

怎么使用sftp命令

rename old_name.txt new_name.txt  # 将远程文件old_name.txt重命名为new_name.txt

权限与高级参数

远程文件的权限可通过chmod命令修改,格式与Linux系统一致,如:

chmod 755 script.sh  # 将远程script.sh的权限设置为所有者可读、写、执行,组和其他用户可读、执行

sftp还支持一些高级参数,

  • -C:启用压缩传输(减少网络带宽占用,适合大文件传输),如sftp -C user@host
  • -P:指定非默认SSH端口,如sftp -P 2222 user@host(服务器SSH端口为2222时);
  • -v:启用详细模式(显示传输过程中的详细信息,便于调试),如sftp -v user@host

若需查看本地目录或文件,可使用lcd(切换本地目录)和lls(列出本地文件),如:

lcd /path/to/local  # 切换本地工作目录
lls                 # 列出当前本地目录下的文件列表

注意事项

  1. 安全性:始终优先使用sftp而非ftp,确保数据传输加密;若服务器允许,建议配置SSH密钥认证替代密码登录,提升安全性。
  2. 端口与权限:确保防火墙开放SSH端口(默认22),且用户对目标目录有足够的读写权限。
  3. 文件名处理:若文件名包含空格或特殊字符(如空格、、等),需用双引号括起来,如:
    put "my file.txt" "remote file.txt"
  4. 传输中断:sftp本身不支持断点续传,若传输中断需重新传输;对于大文件,可考虑使用rsync(支持断点续传)替代。

相关问答FAQs

问题1:sftp和ftp有什么区别?
解答:sftp基于SSH协议,数据传输全程加密(使用AES等加密算法),安全性高;而ftp是明文传输,用户名、密码及文件内容均可能被窃取,sftp使用单一端口(SSH端口),而ftp默认使用20(数据传输)和21(控制)两个端口,配置更复杂;sftp的命令与Linux终端类似(如lscd),ftp则使用独立命令集(如dircd)。

问题2:sftp传输文件时提示权限不足怎么办?
解答:权限不足通常是由于当前用户对目标目录或文件没有读写权限,可尝试以下方法:

  1. 检查目标目录权限:使用ls -l查看目录权限,确保用户有执行权限(进入目录需x权限)和写权限(创建/修改文件需w权限);
  2. 联系服务器管理员调整权限;
  3. 若上传文件,确保目标目录存在且有写权限,如mkdir -p /home/user/upload(创建不存在的目录并赋予递归权限),再执行put命令。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/15842.html

(0)
酷番叔酷番叔
上一篇 9小时前
下一篇 9小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信