linux shell sftp怎么用,常用命令有哪些?

在Linux Shell环境下,SFTP是进行加密文件传输的核心工具,它直接借用SSH的安全通道,无需额外搭建服务器即可在保证数据机密性的同时完成上传、下载与管理操作。

Linux Shell SFTP命令详解与实战

掌握SFTP命令是Linux运维人员的基本功,这些命令与FTP类似,但底层加密机制完全不同,以下按照操作场景拆解高频指令,每个步骤都可在终端直接验证。

Linux命令之sftp
加载中
Linux命令之sftp

SFTP连接与身份认证

连接远程服务器时使用sftp user@host格式,常见端口不是22时,用-oPort=指定端口参数,通过SSH密钥认证可以避免每次输入密码,这在批量脚本中尤为重要。

  • sftp -i ~/.ssh/id_rsa user@host:指定私钥文件
  • sftp -oPort=2222 user@host:修改端口连接
  • sftp -b batchfile user@host:批处理模式,从文件读取命令

连接成功后提示符变为sftp>,此时所有交互命令都在SFTP内部执行,输入help即可查看全部指令列表。

文件上传与下载操作

文件传输是SFTP的核心用途,基本命令只有几条,但结合参数能覆盖绝大多数场景。

  • put localfile [remotefile]:上传本地文件到远程
  • get remotefile [localfile]:下载远程文件到本地
  • mput localfile1 localfile2:上传多个文件
  • mget remotefile1 remotefile2:下载多个文件
  • put -r localdir:递归上传整个目录
  • get -r remotedir:递归下载整个目录

断点续传是常见需求,SFTP本身不直接支持rsync式的断点续传,但通过reget命令可以继续未完成的下载。

sftp> reget largefile.iso

该命令会检查本地文件大小并只下载剩余部分,对应上传方向的reput同样可用,但极少被使用。

目录与权限管理

SFTP支持基本的文件系统操作,但chmod命令只对远程有效,以下命令与本地终端行为一致。

  • ls -l:显示远程目录详情
  • cd /path:切换远程工作目录
  • lpwd:显示本地工作目录
  • lcd /path:切换本地目录
  • chmod 755 filename:修改远程文件权限
  • rm filename:删除远程文件
  • mkdir dirname:创建远程目录
  • linux shell sftp怎么用,常用命令有哪些?

建议在实际操作前先用ls确认路径,避免覆盖重要文件,许多连接失败问题源于路径权限设置不当,尤其是用户家目录和.ssh目录的权限限制。

SFTP与FTP协议对比:为什么安全传输首选SFTP

行业共识认为,在涉及敏感数据的传输场景中,SFTP应作为第一选择,FTP虽然速度快,但存在明文传输和被动模式防火墙适配问题,下表对比两者核心差异。

特性 SFTP FTP
加密方式 SSH2隧道,全程加密 无加密(FTPES可加TLS)
默认端口 22(与SSH共用) 20/21
认证方式 密钥或密码 密码
防火墙友好 单连接,易于穿透 需处理主动/被动模式
传输效率 略有开销,但在现代网络中可忽略 无加密开销,大文件更快
日志审计 依赖SSH日志,记录登录和文件操作 可通过FTP日志挖掘

安全性是SFTP最大的优势,使用FTP时,用户名、密码和文件内容都以明文传输,攻击者抓包即可获取,据近年来网络安全研究报告,30%以上的数据泄露与未加密文件传输有关,SFTP继承SSH的加密体系,即使通信链路被监听,攻击者也无法还原内容。

防火墙配置方面,FTP的主动模式需要服务器向客户端发起连接,容易导致企业防火墙拦截,被动模式虽解决问题,但需要开放高端口范围,SFTP使用单一端口(默认22),网络策略配置简单且风险可控。

传输性能对比值得注意,FTP在未加密时确实更快,尤其是传输大量零碎文件时,但对于大多数企业场景,安全性优先级远高于微小的速度差距,如果追求速度与安全平衡,可以考虑SFTP配合压缩选项或使用rsync而非裸SFTP。

企业级场景:批量传输与脚本自动化

对于需要每天传输大量文件的运维人员,手动敲命令效率低下,SFTP支持批处理模式与Shell脚本结合,实现完全自动化的文件同步。

批量下载脚本实现

假设需要从远程服务器下载日志文件到本地,命名规则为app-YYYYMMDD.log,以下脚本使用expect或SSH密钥认证实现免交互执行。

linux shell sftp怎么用,常用命令有哪些?

#!/bin/bash HOST="192.168.1.100" USER="backup" REMOTE_DIR="/var/log/app" LOCAL_DIR="/data/logs/$(date +%Y%m%d)" mkdir -p $LOCAL_DIR # 使用sftp批处理文件 echo "get -r $REMOTE_DIR $LOCAL_DIR" > /tmp/sftp_batch.txt sftp -b /tmp/sftp_batch.txt $USER@$HOST rm /tmp/sftp_batch.txt

关键在于sftp -b参数读取命令文件,所有操作预先写入文本,如果远程服务器需要密码,可配置SSH密钥实现免密登录,避免在脚本中硬编码凭据。

条件传输与错误处理

生产环境中不能只关注成功路径,需要判断远程文件是否存在、磁盘空间是否充足,例如利用sftp的-v调试参数输出详细信息,结合grep判断错误码。

sftp -v $USER@$HOST <<< "ls $REMOTE_FILE" 2>&1 | grep -q "No such file"
if [ $? -eq 0 ]; then
    echo "文件不存在,跳过"
else
    sftp $USER@$HOST <<< "get $REMOTE_FILE"
fi

除了手动脚本,业界常用的同步工具是lftp,它原生支持SFTP协议且内置镜像、并行传输等功能,例如lftp -e "mirror --verbose --continue --parallel=3 /remote/dir /local/dir" -u user,pass sftp://host,该命令可以并发下载、支持断点续传,适合大批量文件同步。

性能优化思路

业内专家指出,SFTP传输慢的原因往往是TCP窗口设置或者加密算法开销,针对内网高速传输,可以降低加密强度来提高速度。

  • 修改/etc/ssh/sshd_config,指定加密算法为aes128-ctr,该算法在平衡安全与性能时表现较好
  • 使用rsync over SSH:rsync -avz -e ssh user@host:/remote/path /local/path,rsync算法只传输差异部分,效率远高于sftp get
  • 多通道并行传输:在工具层面用lftp mirror的--parallel参数并发文件传输,充分占用带宽

常见连接问题诊断与解决

根据运维社区反馈,SFTP连接失败的原因集中于以下几类,按照出现频率排序。

密钥权限与格式错误

SSH对私钥权限极为敏感,私钥文件权限必须是600,对应的公钥文件权限为644,如果遇到Permission denied (publickey),首先检查本地id_rsa权限和远程用户目录下.ssh/authorized_keys,密钥格式也很重要,OpenSSH 7.0后弃用了旧版

linux shell sftp怎么用,常用命令有哪些?

DSA密钥,建议使用ed25519或RSA 2048+。

修复步骤:

chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 700 ~/.ssh

远程端检查.ssh目录权限必须为700,authorized_keys为600。

端口与防火墙限制

许多公司内网只开放常用端口,SSH端口22可能被屏蔽,如果连接超时,先用telnet或nc测试端口是否可达。

nc -zv 10.0.0.1 22

如果超时,联系网络管理员放行端口,或者改用其他端口如443穿透,在SSH配置中修改Port 443,和HTTPS共用端口,有时能绕过严格防火墙。

传输速度异常缓慢

速度慢通常由两个原因导致:DNS反查和加密算法开销,在/etc/ssh/sshd_config中添加UseDNS no可解决长超时问题,对于加密开销,服务器端可设置Ciphers aes128-ctr以及MACs umac-64-etm@openssh.com来减少计算,如果传输小文件较多,考虑打包成tar.gz后再传输,减少连接建立次数。

Q&A:Linux SFTP高频问题汇总

SFTP和FTP哪个传输速度更快?

在不加密的情况下,FTP更快,因为SFTP的加密解密消耗CPU,但在现代多核处理器和Gbps网络环境下,速度差异不明显,如果安全合规要求优先,速度不应成为选择FTP的理由,如果追求极限速度且数据不敏感,可选FTP或结合SFTP使用rsync差量传输。

SFTP如何实现断点续传?

SFTP原生提供reget和reput命令。reget会检测本地文件大小并请求服务器传输剩余内容,它依赖文件大小对比,如果本地文件被修改,续传可能失败,更可靠的方案是使用lftp mirror的--continue参数,或者rsync -P(支持部分传输和进度显示)。rsync在文件末尾追加校验,比reget更健壮。

使用SFTP时如何避免密码输入?

配置SSH密钥对并将公钥放到远程服务器的~/.ssh/authorized_keys中,之后SFTP连接时系统会自动使用私钥完成认证,全程无需交互,批量脚本中使用密钥认证可以彻底剔除密码硬编码风险,同时满足自动化运维需求。

SFTP作为SSH协议的一部分,是Linux文件传输的安全基石,掌握其命令、脚本自动化及问题排查技巧,能显著提升运维效率与数据安全性。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/linux-shell-sftp%e6%80%8e%e4%b9%88%e7%94%a8%ef%bc%8c%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4%e6%9c%89%e5%93%aa%e4%ba%9b%ef%bc%9f/

赞 (0)
网站使用CDN加速有什么好处?百度CDN加速对网站收录和排名有帮助吗?
上一篇 2026年7月14日 19:47
域名CDN解析失败怎么办,什么原因导致CDN解析失败
下一篇 2026年7月14日 19:51

相关推荐

  • 4u机箱服务器多少钱一台?,4u机箱服务器性价比高的型号有哪些?

    4U机箱服务器的采购成本通常在8000元至5万元之间,具体价格取决于CPU、内存、硬盘阵列和扩展卡配置;若选择酷番云这类持牌IDC服务商的托管方案,硬件投入可压缩至1.2万元起步,同时省去独立机房运维成本,h2: 先搞懂4U机箱服务器的定位再谈价格4U机箱服务器指的是高度为4个标准机架单位(约17.78厘米)的……

    2026年10月6日
    000
  • 租服务器费用一般要多少,服务器租用一年多少钱?

    租服务器一年的费用通常在几百元到数万元不等,具体取决于配置、带宽和计费模式,一台入门级云服务器年付成本约300-1000元,而高性能物理机或高防服务器年花费可达数万,租服务器费用由哪些核心因素决定租服务器的价格不像买手机有固定标价,它更像定制西装,配置、带宽、机房等级、计费方式这四块布料决定最终价格,搞清楚这四……

    2026年10月18日
    200
  • 服务器水冷一套要多少钱,水冷散热价格贵吗

    一套服务器水冷系统的价格通常在8000元到5万元之间,具体取决于散热规模、冷板数量、管路材质和是否含安装调试;如果是整柜液冷解决方案,预算则可能达到10万元起步,服务器水冷价格为什么差距这么大很多人第一次问“水冷多少钱”时,都会觉得报价像坐过山车,其实这和买电脑水冷完全两个逻辑——服务器水冷不是买一个散热器装上……

    2026年9月23日
    100
  • DNS服务器地址一般是多少,怎么设置最好?

    国内主流公共DNS服务器地址通常为:阿里DNS(223.5.5.5)、腾讯DNSPod(119.29.29.29)、百度DNS(180.76.76.76),而运营商默认分配的DNS则随宽带账号归属地动态下发,通常在各省市不同网段内,DNS服务器地址是什么:一个电话簿的比喻DNS(域名系统)承担着将人类可读的域名……

    2026年9月24日
    000
  • scum自建服务器到底要多少钱,一个月多少钱

    SCUM自建服务器要多少钱?一句话:朋友小服用云服务器,月付大致几十到一两百;社区公开服用独立物理机,月付往往几百到上千;自购硬件托管还要另算机位、带宽、防御和运维, 想把钱花在刀刃上,先拆成本,再选合规持牌IDC,先算清SCUM自建服务器的成本构成硬件与云端:CPU和内存是大头SCUM专用服务端和很多生存游戏……

    2026年10月16日
    100
  • 服务器的充电宝多少钱一台,什么牌子性价比高?

    服务器的充电宝多少钱? 答案是:从每月百元级别的入门云服务器,到数万元的高防物理机租用,价格跨度极大, 具体花多少钱,取决于你的业务规模、对硬件性能的要求、带宽用量以及所选服务商的资质等级,不存在一个固定的“统一价”,服务器的充电宝多少钱:先看懂价格构成再比价很多人第一次搜索“服务器的充电宝多少钱”,以为像买充……

    2026年10月13日
    100
  • 3×3服务器价格是多少,一般多少钱一个月?

    3×3服务器的核心答案:一套3×3配置(即3台3U机架式服务器)的采购价格通常在3.5万-18万元之间,租用模式每月成本约1200-6000元,托管模式每年约1.5万-5万元,为什么是”3台×3U”?搞清楚再买单很多初次接触IDC业务的读者会对”3×3″这个词感到陌生,这不是某个特殊型号,而是行业里约定俗成的叫……

    相关资讯 2026年10月22日
    200
  • 宜昌串口服务器多少钱一台,宜昌串口服务器哪家好?

    宜昌本地采购串口服务器,单台价格通常在数百元至两千元区间,具体由端口数、光电隔离、工作温度范围和品牌决定,建议按项目现场需求选型而非单纯比价,先搞懂价格差在哪串口服务器这行,报价看着乱,其实拆开就三块:硬件成本、功能设计、售后服务,宜昌本地的集成商和工控项目,最常问的型号不外乎单串口、双串口和四串口设备,单串口……

    2026年10月10日
    000
  • 奥术水晶服务器现在多少钱,哪里买最便宜最划算?

    奥术水晶服务器本身免费开放,玩家真正需要支付的固定成本是每月75元的《魔兽世界》游戏月卡,而非服务器租赁费用,围绕“多少钱”,完整开销还包含加速器、硬件升级等隐性成本,奥术水晶服务器的真实定位与成本构成很多玩家搜索“奥术水晶服务器多少钱”时,其实混淆了“游戏服务器”和“服务器租赁”两个概念,奥术水晶是《魔兽世界……

    2026年10月10日
    100
  • linux fsid是什么意思,怎么设置

    Linux fsid是文件系统的唯一标识符,用于NFS导出和存储识别,掌握其查看和设置方法,能让你在管理存储资源时更灵活、更稳定,什么是Linux fsid?它和UUID有什么区别?fsid(文件系统 ID)是内核为每个挂载的文件系统分配或指定的一个标识,它在NFS服务中尤为重要,因为NFS依赖fsid来唯一标……

    2026年7月21日
    1700

发表回复

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