ssh_scan
Scan a network to discover available SSH hosts for secure remote administration and system management tasks.
Instructions
Escanear red para encontrar hosts SSH disponibles
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | Red a escanear (ej: 192.168.1.0/24) |
Implementation Reference
- src/index.js:585-629 (handler)Handler implementation for the ssh_scan tool. Scans target network/host for open SSH port 22 using nmap (if available) or PowerShell Test-NetConnection fallback. Returns scan results.case 'ssh_scan': log('info', `🔍 Escaneando red: ${args.target}`); // Validar formato de red/host if (!args.target || !/^[\d\w\.\-\/]+$/.test(args.target)) { throw new Error('Formato de target inválido. Use formato IP (192.168.1.1) o CIDR (192.168.1.0/24)'); } // Usar nmap si está disponible, sino usar ping básico let scanCommand; try { // Verificar si nmap está disponible await executePowerShell('nmap --version', 5000); scanCommand = `nmap -p 22 --open ${args.target}`; } catch (e) { // Fallback a escaneo básico con ping log('warn', 'nmap no disponible, usando escaneo básico'); if (args.target.includes('/')) { throw new Error('Escaneo de rango CIDR requiere nmap. Instale nmap o especifique un host individual.'); } scanCommand = `Test-NetConnection -ComputerName ${args.target} -Port 22 -WarningAction SilentlyContinue | Select-Object ComputerName, TcpTestSucceeded, RemotePort`; } const scanResult = await executePowerShell(scanCommand, args.timeout); return { content: [ { type: 'text', text: `🔍 Escaneo SSH de ${args.target}:\n\n${scanResult.output}` } ], isError: false, metadata: { tool: 'ssh_scan', target: args.target, exitCode: scanResult.exitCode, executionTime: scanResult.executionTime, rateLimitInfo: { remainingRequests: rateLimiter.getRemainingRequests() }, timestamp: new Date().toISOString() } };
- src/index.js:450-467 (registration)Registration of the ssh_scan tool in the ListToolsRequestSchema handler, defining its name, description, and input schema.{ name: 'ssh_scan', description: 'Escanear red para encontrar hosts SSH disponibles', inputSchema: { type: 'object', properties: { target: { type: 'string', description: 'Red a escanear (ej: 192.168.1.0/24) o host individual' }, timeout: { type: 'number', description: 'Timeout en milisegundos (opcional)' } }, required: ['target'] } },
- src/index.js:455-465 (schema)Input schema definition for ssh_scan tool.properties: { target: { type: 'string', description: 'Red a escanear (ej: 192.168.1.0/24) o host individual' }, timeout: { type: 'number', description: 'Timeout en milisegundos (opcional)' } }, required: ['target']