fenghuo/test-all-creds.js

104 lines
2.8 KiB
JavaScript
Raw Normal View History

2025-05-28 22:16:02 +08:00
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('<Code>')) {
const codeMatch = result.data.match(/<Code>([^<]+)<\/Code>/);
const messageMatch = result.data.match(/<Message>([^<]+)<\/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);