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

使用ssh2-sftp-client连接AWS上的VSFTPD服务提示认证失败如何解决

问题根源

从FileZilla的报错server sent: publickey可直接定位核心问题:
你当前连接的22端口对应AWS实例的SSH自带SFTP服务,该服务仅启用了公钥认证,关闭了密码认证,你用密码提交认证请求自然被拒绝。
另外注意:你搭建的VSFTPD是FTP/FTPS服务端,默认使用21端口,和你当前连的22端口SFTP服务完全是两个独立的服务。

解决方案分两种,按需选择:


方案1:继续使用22端口的SSH SFTP服务连接

子方案1.1 开启SSH密码认证(快速适配现有代码)

  • 登录AWS EC2实例,编辑SSH配置文件:sudo vi /etc/ssh/sshd_config
  • 找到PasswordAuthentication参数,值修改为yes,如果参数开头有#注释符则删除
  • 保存配置后重启SSH服务生效:sudo systemctl restart sshd
  • 确认ashish-ftp用户密码正确且未过期,你原有的连接代码可直接运行。

子方案1.2 使用公钥认证(更安全,生产环境推荐)

  • 本地生成SSH密钥对,将公钥内容写入AWS实例/home/ashish-ftp/.ssh/authorized_keys文件
  • 调整实例侧权限:.ssh目录权限设为700,authorized_keys文件权限设为600,所有者均为ashish-ftp
  • 修改连接代码,使用私钥认证:
const fs = require('fs');
const SftpClient = require('ssh2-sftp-client');
const sftp = new SftpClient();

sftp.connect({
  host: "3.6.75.65",
  port: "22",
  username: "ashish-ftp",
  privateKey: fs.readFileSync('/本地/私钥文件/路径'),
  passphrase: '私钥设置了密码就填这行,没有可删除'
})
.then(() => {
  console.log("连接成功")
})
.catch((err)=>{
  console.log("连接错误", err)
})
  • 确认AWS安全组已开放22端口入站权限给你的客户端IP。

方案2:使用你搭建的VSFTPD服务连接

你之前选错了连接协议和端口,VSFTPD走FTP/FTPS协议,默认端口21,按以下步骤调整:

  1. 先确认VSFTPD配置正常:
    • 编辑/etc/vsftpd.conf,确保local_enable=YES、write_enable=YES,若用密码登录需确保密码认证相关配置开启
    • 若使用被动模式,需配置pasv_enable=YES、pasv_min_port=40000、pasv_max_port=45000,并将21端口、40000-45000端口段加入AWS安全组入站规则
  2. 不要使用ssh2-sftp-client库,该库仅支持SSH SFTP协议,更换为basic-ftp这类FTP协议专用库,示例代码:
const ftp = require("basic-ftp")

async function connectFtp() {
  const client = new ftp.Client()
  try {
    await client.access({
      host: "3.6.75.65",
      port: 21,
      user: "ashish-ftp",
      password: "你的VSFTPD用户密码",
      // 若开启了FTPS,增加配置 secure: true
    })
    console.log("连接成功")
    // 示例:列出目录文件
    console.log(await client.list())
  } catch(err) {
    console.log("连接错误", err)
  }
  client.close()
}

connectFtp()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 00:54:03