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

ColdFusion 2018:使用<cfftp>建立SFTP连接失败求助

解决连接SFTP失败的问题

核心问题是你混淆了FTPS和SFTP两种协议:

  • 你代码里的secure="yes"是启用FTPS(基于SSL/TLS的FTP),而FileZilla连接的是SFTP(基于SSH的文件传输协议),两者完全不同,这是连接失败的根本原因。
  • 另外你尝试使用的key参数是FTPS的SSL密钥配置,不适用于SFTP,所以添加后会报错。

修正步骤与代码示例

  1. 指定SFTP默认端口:SFTP默认使用22端口,需显式配置port="22"
  2. 使用SSH主机指纹:用sshKeyFingerprint参数替代key,该参数需要服务器的SSH主机指纹(不是公钥内容)
  3. 明确协议模式:部分ColdFusion版本支持secure="SFTP"来直接指定协议,旧版本可省略该属性,通过sshKeyFingerprint自动触发SFTP模式

修正后的代码:

<cfset FTP_server="ftp.mysite.com">
<cfset FTP_site="NS">
<cfset FTP_user="user">
<cfset FTP_pwd="pwd">
<!--- 替换为服务器的SSH主机指纹,从FileZilla中获取 --->
<cfset FTP_sshFingerprint="SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">

<cfftp 
    action="OPEN" 
    server="#FTP_server#" 
    connection="#FTP_site#"
    username="#FTP_user#" 
    password="#FTP_pwd#"
    port="22"
    secure="SFTP"
    sshKeyFingerprint="#FTP_sshFingerprint#"
    stopOnError="Yes">

<!--- 输出cfftp变量查看详细错误信息,而非连接名 --->
<cfdump var="#cfftp#">
<cfabort>

关键注意事项

  • 获取SSH主机指纹:打开FileZilla连接该SFTP服务器,成功连接后点击菜单栏「服务器」→「检查服务器证书」,复制对应格式的指纹(比如SHA256开头的字符串)
  • 错误排查:用<cfdump var="#cfftp#">可以看到具体的错误代码和描述,比如指纹不匹配、端口错误等
  • 环境兼容性:确保ColdFusion的Java环境包含JSch库(多数CF版本自带,若缺失需手动添加)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:27:16