Windows命令行如何使用SFTP?

在Windows系统中使用命令行进行SFTP操作,可以通过内置的PowerShell或第三方工具如PuTTY实现,以下将详细介绍两种方法的操作步骤、常见命令及注意事项,帮助用户高效完成远程文件传输任务。

windows sftp 命令行
(图片来源网络,侵删)

使用Windows PowerShell进行SFTP操作

Windows 10及以上版本默认支持OpenSSH客户端,可直接通过PowerShell执行SFTP命令,操作前需确保已安装OpenSSH工具(可通过“设置”-“应用”-“可选功能”-“添加功能”安装)。

连接SFTP服务器

sftp username@hostname
  • username:服务器用户名
  • hostname:服务器IP地址或域名
    执行后会提示输入密码,也可通过-i参数指定私钥文件路径:

    sftp -i C:\path\to\private_key username@hostname

常用SFTP命令

连接成功后,进入SFTP交互模式,可执行以下命令:

命令功能示例
ls列出当前目录文件ls -l(显示详细信息)
cd切换远程目录cd /var/www
get下载文件get remote_file.txt C:\local\path
put上传文件put C:\local\file.txt /remote/path/
mkdir创建远程目录mkdir new_folder
rm删除远程文件rm old_file.txt
pwd显示当前远程路径pwd
quit退出SFTP会话quit

批量操作示例

下载整个远程目录:

get -r remote_dir/ C:\local\path

上传本地目录并保持结构:

windows sftp 命令行
(图片来源网络,侵删)
put -r C:\local\dir/ /remote/path/

高级技巧

  • 免密登录:通过SSH密钥对实现,需将公钥上传至服务器~/.ssh/authorized_keys
  • 脚本化操作:在PowerShell脚本中调用SFTP命令,
    $sftpArgs = "-b $((Get-Content script.sftp) -join "`n") username@hostname"
    Start-Process sftp.exe -ArgumentList $sftpArgs -Wait

    其中script.sftp包含多行SFTP命令。

使用PuTTY实现SFTP操作

若系统未安装OpenSSH,可通过PuTTY的PSFTP工具实现SFTP操作。

下载与配置

  1. 下载PuTTY套件(包含PSFTP)并解压到系统路径。
  2. 生成密钥对(若使用密钥认证):
    puttygen -t rsa -b 2048 -C "your_email@example.com"

    保存私钥(.ppk文件)并上传公钥至服务器。

连接服务器

psftp username@hostname

使用密钥认证需指定私钥:

windows sftp 命令行
(图片来源网络,侵删)
psftp -i private_key.ppk username@hostname

核心命令

命令功能示例
ls列出文件ls -a(显示隐藏文件)
cd切换目录cd /home/user
get下载文件get -r remote_dir
put上传文件put local_file.txt
mget批量下载mget *.txt
mput批量上传mput *.log

配置文件传输模式

PSFTP默认使用ASCII模式传输文本文件,需手动切换为二进制模式:

binary  # 后续传输均使用二进制模式
ascii   # 切换回文本模式

常见问题与解决方案

  1. 连接超时
    检查防火墙设置是否开放SFTP默认端口(22),或尝试指定端口:

    sftp -P 2222 username@hostname
  2. 权限错误
    确保本地用户对目标路径有读写权限,远程用户对服务器目录有操作权限,可通过chmod修改远程权限:

    chmod 755 /remote/directory

相关问答FAQs

Q1: 如何在SFTP会话中查看传输进度?
A1: PowerShell的SFTP命令本身不显示进度,但可通过第三方工具如lftpwinscp.com(命令行模式)实现进度显示,例如使用lftp:

lftp -u username,password -e "pget -n 10 remote_file; exit" sftp://hostname

其中-n参数指定并行任务数。

Q2: 如何通过SFTP自动同步本地与远程目录?
A2: 可编写脚本结合rsync(需安装)或使用SFTP的get/put命令配合循环逻辑,例如PowerShell脚本示例:

$remoteDir = "/remote/path"
$localDir = "C:\local\path"
$sftpSession = Start-Process sftp -ArgumentList "username@hostname" -PassThru -NoNewWindow
Get-ChildItem $localDir | ForEach-Object {
    $remoteFile = Join-Path $remoteDir $_.Name
    $command = "put `"$($_.FullName)`" `"$remoteFile`""
    $sftpSession.StandardInput.WriteLine($command)
}
$sftpSession.StandardInput.WriteLine("quit")
$sftpSession.WaitForExit()

需注意复杂场景建议使用专业工具如Unison或FreeFileSync。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/469681.html<

(0)
运维的头像运维
上一篇2025-11-15 18:53
下一篇 2025-11-15 19:01

相关推荐

  • C如何连续执行多条CMD命令?

    在C语言中执行多条CMD命令是一项常见的需求,特别是在需要自动化系统操作、批量处理任务或与外部程序交互的场景中,C语言提供了多种方式来调用系统命令,其中最常用的是通过system()函数、popen()函数以及更底层的CreateProcess函数(Windows平台)或fork()/exec()组合(Linu……

    2025-11-16
    0
  • Windows命令行如何高效编辑文件?

    Windows命令行编辑是系统管理和日常操作中不可或缺的技能,无论是简单的文件管理还是复杂的系统维护,命令行工具都能提供高效、灵活的解决方案,本文将详细介绍Windows命令行编辑的核心功能、常用命令及实用技巧,帮助用户更好地掌握这一工具,Windows命令行,即命令提示符(CMD),是Windows操作系统中……

    2025-11-14
    0
  • Windows SFTP命令行怎么用?

    在Windows系统中,通过命令行使用SFTP(SSH File Transfer Protocol)进行文件传输是许多开发者和系统管理员的常见需求,相较于图形化工具,命令行操作更高效、自动化程度更高,尤其适合批量处理或脚本化场景,本文将详细介绍Windows环境下如何通过命令行使用SFTP,包括准备工作、基本……

    2025-11-13
    0
  • 如何用DOS命令批量重命名文件?

    在Windows操作系统中,虽然没有名为“DOS”的独立操作系统,但命令提示符(CMD)中的命令行工具仍保留了部分DOS时代的功能,其中ren或rename命令是实现批量重命名文件的高效工具,通过结合通配符(如和)及命令参数,用户可以快速对大量文件进行统一格式调整,而无需手动逐个修改,以下将详细介绍ren命令的……

    2025-11-12
    0
  • 批处理命令如何批量重命名文件?

    批处理命令是Windows操作系统中一种强大的脚本工具,通过简单的文本文件即可实现批量文件操作,其中重命名功能尤为实用,本文将详细解析如何利用批处理命令实现文件重命名,涵盖基础语法、高级技巧及实际应用场景,基础重命名命令批处理中最简单的重命名命令是ren或rename,两者功能完全相同,基本语法为:ren [原……

    2025-11-10
    0

发表回复

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