const http = require('http'); // 测试不同的凭据组合 const credentialsList = [ { name: 'Docker环境变量凭据 (nice1234)', accessKey: 'nice1234', secretKey: 'nice1234', }, { name: 'MinIO默认凭据', accessKey: 'minioadmin', secretKey: 'minioadmin', }, { name: '你创建的新AccessKey', accessKey: '7Nt7OyHkwIoo3zvSKdnc', secretKey: 'EZ0cyrjJAsabTLNSqWcU47LURMppBW2kka3LuXzb', }, ]; async function testCredentials(accessKey, secretKey) { const options = { hostname: 'localhost', port: 9000, path: '/?list-type=2', // 列出objects method: 'GET', headers: { Host: 'localhost:9000', Authorization: `AWS ${accessKey}:fakesignature`, // 简化测试 }, }; return new Promise((resolve, reject) => { const req = http.request(options, (res) => { let data = ''; res.on('data', (chunk) => (data += chunk)); res.on('end', () => { resolve({ statusCode: res.statusCode, data: data, headers: res.headers, }); }); }); req.on('error', reject); req.setTimeout(3000, () => { req.destroy(); reject(new Error('请求超时')); }); req.end(); }); } async function main() { console.log('🔍 测试所有可能的MinIO凭据...\n'); for (const { name, accessKey, secretKey } of credentialsList) { console.log(`📱 测试 ${name}:`); console.log(` Access Key: ${accessKey}`); console.log(` Secret Key: ${secretKey.substring(0, 8)}...`); try { const result = await testCredentials(accessKey, secretKey); console.log(` 状态码: ${result.statusCode}`); if (result.statusCode === 403) { if (result.data.includes('SignatureDoesNotMatch')) { console.log(' 🔐 签名错误 (但认证方式正确)'); } else if (result.data.includes('InvalidAccessKeyId')) { console.log(' ❌ AccessKey无效'); } else { console.log(' 🔐 权限被拒绝'); } } else if (result.statusCode === 200) { console.log(' ✅ 认证成功!'); } else { console.log(` ⚠️ 未知状态: ${result.statusCode}`); } // 显示错误详情 if (result.data.includes('')) { const codeMatch = result.data.match(/([^<]+)<\/Code>/); const messageMatch = result.data.match(/([^<]+)<\/Message>/); if (codeMatch && messageMatch) { console.log(` 错误: ${codeMatch[1]} - ${messageMatch[1]}`); } } } catch (error) { console.log(` ❌ 连接失败: ${error.message}`); } console.log(''); // 空行分隔 } console.log('💡 建议:'); console.log('1. 如果Docker凭据有效,更新应用配置使用 nice1234/nice1234'); console.log('2. 如果新AccessKey有效,确保它有正确的权限'); console.log('3. 可以通过MinIO控制台 (http://localhost:9001) 管理用户和权限'); } main().catch(console.error);