You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PSFTP编写SFTP命令脚本,解决SYSTEM用户运行异常问题

问题根因

你遇到的异常核心原因是PuTTY/psftp的主机密钥校验机制:
普通用户首次连接SFTP服务器时,会弹出主机密钥确认提示,选择确认后密钥会存储在当前用户的注册表路径HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys中,后续连接无需重复校验。但SYSTEM用户的注册表配置是独立的,没有对应的密钥记录,psftp遇到未知主机密钥会直接静默中断,根本不会执行后续的ls命令,因此输出只有初始目录提示和退出信息。

可行解决方案

方案1:命令行直接指定主机密钥(最稳定,无注册表依赖)

  1. 先用普通用户运行psftp连接目标服务器,记录提示中显示的主机密钥指纹
  2. 给psftp命令加上-hostkey参数直接指定密钥,修改后的命令参考:
"C:\Program Files\PuTTY\psftp.exe" -l myusername -pw mycomplexpwd -hostkey 你的服务器主机密钥 FTPServerHostname -b C:\Scripts\lscmd.txt > C:\Scripts\ls.txt

方案2:给SYSTEM用户导入主机密钥

  1. 普通用户成功连接过一次服务器后,打开注册表编辑器,导出HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys项为reg文件
  2. 编辑导出的reg文件,把路径中的HKEY_CURRENT_USER改成HKEY_USERS\.DEFAULT
  3. 双击导入修改后的reg文件,即可让SYSTEM用户读取到已信任的主机密钥

额外注意事项

  • 路径权限:不要把脚本、输入输出文件放在普通用户的桌面目录,建议统一放到C:\Scripts这类独立目录,给该目录赋予SYSTEM用户的完全控制权限,避免权限不足导致读取命令文件、写入输出失败
  • 绝对路径:命令中所有程序、文件都写全绝对路径,避免SYSTEM用户的PATH环境变量缺失对应路径,找不到psftp或命令文件
  • 任务计划配置:确认任务勾选了「不管用户是否登录都要运行」、「使用最高权限运行」,配置的操作起始目录也要和脚本实际路径一致

内容的提问来源于stack exchange,提问作者amyassin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:54:02