菜鸟科技网

Windows命令行如何使用sftp?

Windows 命令行中的 SFTP(SSH File Transfer Protocol)是一种通过安全 shell 连接进行文件传输的协议,它提供了加密的数据传输和身份验证机制,确保文件在传输过程中的安全性,与传统的 FTP 协议相比,SFTP 更安全,因为它通过 SSH 隧道传输数据,避免了明文传输的风险,在 Windows 系统中,虽然默认的命令提示符(CMD)不支持 SFTP 命令,但用户可以通过内置的 PowerShell 或第三方工具(如 OpenSSH 客户端)来实现 SFTP 功能。

Windows命令行如何使用sftp?-图1
(图片来源网络,侵删)

使用 PowerShell 进行 SFTP 传输

Windows 10 和 Windows 11 系统中,PowerShell 是一个强大的命令行工具,但默认情况下并不直接支持 SFTP 命令,用户可以通过调用第三方工具(如 OpenSSH 的 sftp.exe)或使用 PowerShell 脚本来实现 SFTP 传输,以下是基本步骤:

  1. 安装 OpenSSH 客户端
    如果系统中尚未安装 OpenSSH 客户端,可以通过“设置”>“应用”>“可选功能”>“添加功能”搜索并安装“OpenSSH 客户端”。

  2. 使用 sftp.exe 命令
    安装完成后,可以通过 PowerShell 或 CMD 调用 sftp.exe,连接到远程 SFTP 服务器的命令为:

    sftp username@hostname

    连接后,会提示输入密码,或通过 SSH 密钥进行身份验证,连接成功后,可以使用以下命令进行文件操作:

    Windows命令行如何使用sftp?-图2
    (图片来源网络,侵删)
    • ls:列出远程目录内容
    • get:下载文件(如 get remote_file.txt local_file.txt
    • put:上传文件(如 put local_file.txt remote_file.txt
    • mkdir:创建远程目录
    • exit:退出 SFTP 会话

使用第三方工具(如 WinSCP 或 FileZilla)

对于不习惯命令行操作的用户,可以使用图形化工具如 WinSCP 或 FileZilla,它们支持 SFTP 协议并提供直观的界面,但如果需要自动化脚本或批量操作,命令行工具仍然是更好的选择。

常见 SFTP 命令及用途

以下是一些常用的 SFTP 命令及其功能说明:

命令 功能描述 示例
ls 列出远程目录内容 ls -l(显示详细信息)
cd 切换远程目录 cd /home/user
get 下载远程文件 get file.txt C:\local\file.txt
put 上传本地文件 put C:\local\file.txt /home/user/file.txt
mkdir 创建远程目录 mkdir new_folder
rm 删除远程文件 rm file.txt
rmdir 删除远程目录 rmdir empty_folder
pwd 显示当前远程目录 pwd
help 显示帮助信息 help

自动化脚本示例

如果需要频繁进行 SFTP 传输,可以编写 PowerShell 脚本调用 sftp.exe,以下脚本实现了自动上传文件的功能:

$sftpArgs = "-b $((Get-Location).Path)\sftp_commands.txt") username@hostname"
sftp $sftpArgs

sftp_commands.txt 是一个包含 SFTP 命令的文本文件,

Windows命令行如何使用sftp?-图3
(图片来源网络,侵删)
put local_file.txt /home/user/remote_file.txt
exit

相关问答 FAQs

如何在 Windows 命令行中避免每次输入 SFTP 密码?
答:可以通过配置 SSH 密钥对实现免密登录,使用 ssh-keygen 生成密钥对,然后将公钥(id_rsa.pub)上传到远程服务器的 ~/.ssh/authorized_keys 文件中,之后,使用 sftp -i private_key_path username@hostname 命令即可通过密钥认证连接,无需输入密码。

SFTP 传输过程中如何显示进度条?
答:默认的 sftp.exe 不支持进度条显示,但可以通过第三方工具(如 lftppscp)实现,使用 pscp.exe(PuTTY 的 Secure Copy 工具)时,可以通过 -v 参数显示详细传输进度:

pscp -v -P 22 local_file.txt username@hostname:/remote/path/

也可以在 PowerShell 脚本中结合 Write-Progress 自定义进度显示逻辑。

分享:
扫描分享到社交APP
上一篇
下一篇