如何对WinSCP FTP文件传输脚本中的密码进行加密?
如何加密WinSCP脚本中的FTP密码?
有两种可靠的方法可以避免WinSCP脚本中出现明文密码:
方法一:直接生成加密密码替换明文
WinSCP自带密码加密功能,可生成仅当前WinSCP版本能识别的加密密码,步骤如下:
- 打开WinSCP图形客户端,成功登录你的FTPS服务器(确保连接配置无误)。
- 点击顶部菜单栏「会话」→「生成会话URL/代码」。
- 在弹出窗口切换到「脚本」标签页,勾选「加密密码」选项,此时生成的
open命令里的密码就是加密后的字符串。 - 把脚本中原有的
open命令替换成这个带加密密码的版本即可。
修改后的脚本示例(替换xxxxxxxxxx为实际生成的加密密码):
@echo off "C:\Program Files (x86)\WinSCP\WinSCP.com" ^ /log="C:\path\log\WinSCP.log" /ini=nul ^ /command ^ "open ftpes://username:xxxxxxxxxx@ftpchannel.host.com/ -passive=on" ^ "cd /" ^ "lcd ""C:\path\Source_datafiles""" ^ "get ALMR*" ^ "cd /" ^ "rename /ALMR* /archive/ALMR*" ^ "exit" set WINSCP_RESULT=%ERRORLEVEL% if %WINSCP_RESULT% equ 0 ( echo Success ) else ( echo Error ) c: cd "C:\path\Target_datafiles" ren *.txt *.kis.txt exit /b %WINSCP_RESULT%
方法二:使用存储的加密会话
把FTP会话配置保存到WinSCP的配置文件中(密码会自动加密存储),脚本直接调用会话名:
- 在WinSCP图形客户端中,配置好FTPS连接后点击「保存」,给会话起个名称(比如
MyFTPServer)。 - 修改脚本中的
open命令,直接使用会话名:open MyFTPServer。 - 注意去掉脚本中的
/ini=nul参数(或者指定包含会话的配置文件路径,比如/ini="C:\Users\你的用户名\AppData\Roaming\WinSCP\WinSCP.ini")。
修改后的脚本示例:
@echo off "C:\Program Files (x86)\WinSCP\WinSCP.com" ^ /log="C:\path\log\WinSCP.log" ^ /command ^ "open MyFTPServer" ^ "cd /" ^ "lcd ""C:\path\Source_datafiles""" ^ "get ALMR*" ^ "cd /" ^ "rename /ALMR* /archive/ALMR*" ^ "exit" set WINSCP_RESULT=%ERRORLEVEL% if %WINSCP_RESULT% equ 0 ( echo Success ) else ( echo Error ) c: cd "C:\path\Target_datafiles" ren *.txt *.kis.txt exit /b %WINSCP_RESULT%
注意事项
- 加密后的密码和存储的会话仅对当前WinSCP版本有效,升级WinSCP后可能需要重新生成加密密码或重新保存会话。
- 如果使用存储会话的方法,要确保WinSCP配置文件的权限设置正确,限制其他用户读取该文件。
内容的提问来源于stack exchange,提问作者goldenbutter
相关产品推荐
相关产品推荐

