Initial commit
This commit is contained in:
60
server/test_ssh.js
Normal file
60
server/test_ssh.js
Normal file
@@ -0,0 +1,60 @@
|
||||
const { Client } = require('ssh2');
|
||||
const fs = require('fs');
|
||||
require('dotenv').config();
|
||||
|
||||
const config = {
|
||||
host: process.env.SSH_HOST,
|
||||
username: process.env.SSH_USER,
|
||||
port: 22,
|
||||
};
|
||||
|
||||
console.log('--- SSH Connection Diagnostic ---');
|
||||
console.log(`Target: ${config.username}@${config.host}`);
|
||||
console.log(`Key Path: ${process.env.SSH_KEY_PATH || 'Not provided'}`);
|
||||
|
||||
// Fix common user mistake: providing public key instead of private
|
||||
let privateKeyPath = process.env.SSH_KEY_PATH;
|
||||
if (privateKeyPath && privateKeyPath.endsWith('.pub')) {
|
||||
console.warn('⚠️ WARNING: You provided a .pub key. Attempting to use the private key instead...');
|
||||
privateKeyPath = privateKeyPath.replace('.pub', '');
|
||||
console.log(`Trying: ${privateKeyPath}`);
|
||||
}
|
||||
|
||||
if (privateKeyPath) {
|
||||
try {
|
||||
config.privateKey = fs.readFileSync(privateKeyPath);
|
||||
console.log('✅ Private key loaded.');
|
||||
} catch (err) {
|
||||
console.error('❌ Failed to read private key:', err.message);
|
||||
process.exit(1);
|
||||
}
|
||||
} else if (process.env.SSH_PASSWORD) {
|
||||
console.log('Using SSH Password.');
|
||||
config.password = process.env.SSH_PASSWORD;
|
||||
} else {
|
||||
console.error('❌ No Password or Key provided!');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const conn = new Client();
|
||||
conn.on('ready', () => {
|
||||
console.log('✅ SSH Connection Established!');
|
||||
conn.exec('uptime', (err, stream) => {
|
||||
if (err) throw err;
|
||||
stream.on('close', (code, signal) => {
|
||||
console.log('Command "uptime" executed successfully.');
|
||||
conn.end();
|
||||
process.exit(0);
|
||||
}).on('data', (data) => {
|
||||
console.log('Server Uptime: ' + data);
|
||||
}).stderr.on('data', (data) => {
|
||||
console.error('STDERR: ' + data);
|
||||
});
|
||||
});
|
||||
}).on('error', (err) => {
|
||||
console.error('❌ Connection Failed:', err.message);
|
||||
if (err.message.includes('authentication')) {
|
||||
console.log('Hint: Check if the public key is in /root/.ssh/authorized_keys on the remote server.');
|
||||
}
|
||||
process.exit(1);
|
||||
}).connect(config);
|
||||
Reference in New Issue
Block a user