Windows环境下SFTP替代ftp -s脚本模式实现及客户端选型咨询
SFTP脚本化迁移及Windows Server 2012 SSH客户端适配方案
一、SFTP实现脚本化批量操作的方法
OpenSSH原生sftp没有和ftp -s完全一致的参数,但可以通过批处理模式参数实现同等效果,根据认证方式分两种实现路径:
1. 密钥认证(推荐,安全性更高)
- 提前在Windows端生成SSH密钥对,将公钥上传至Unix服务器对应用户的
~/.ssh/authorized_keys文件,配置服务器端.ssh目录权限为700、authorized_keys文件权限为600,即可实现免密登录。 - sftp自带
-b参数用于指定批处理脚本文件,和原有ftp -s逻辑完全对齐,命令格式如下:
sftp -b C:\yourpath\sftpFile.txt 用户名@服务器IP/域名
- 对应的
sftpFile.txt脚本可以直接复用原有逻辑,仅需要删除开头的用户名、密码两行即可,lcd、cd、get、put、quit等指令完全通用,示例如下:
lcd somepath/ cd someotherpath/ get test.xlsx put report.docx quit
2. 密码认证(适合过渡场景)
如果暂时无法切换密钥认证,需要保留密码写入逻辑,可以使用psftp工具实现,它支持直接在命令行传递密码+指定脚本文件,命令格式如下:
psftp 用户名@服务器IP/域名 -pw 你的密码 -b C:\yourpath\sftpFile.txt
脚本格式和上述密钥认证场景的脚本完全一致。
二、Windows Server 2012适用的SSH客户端选择
Windows Server 2012未预装官方SSH客户端,推荐两款兼容性和适配性都符合要求的工具:
- PuTTY组件包:纯绿色单文件工具,无需安装,包含的
psftp.exe可直接适配上述密码/密钥两种认证的脚本化流程,对老旧Windows系统适配性最好,改造成本最低。 - Win32-OpenSSH便携版:微软官方发布的Windows平台SSH工具包,手动部署后可以使用原生
sftp命令,语法和高版本Windows系统预装的SSH客户端完全一致,方便后续系统升级后脚本无需调整。
安全提示:在命令行或脚本中明文存储密码存在泄露风险,长期使用建议优先切换为SSH密钥认证方式。
内容的提问来源于stack exchange,提问作者canmurat
相关产品推荐
相关产品推荐

