SSH Server MCP
Un servidor MCP que proporciona herramientas de gestión remota basadas en SSH, actuando como proxy.
GitHub
6
Prueba este MCPPatrocinadoDocumentación
SSH MCP Server
Un servidor de Model Context Protocol (MCP) para gestionar servidores Linux a través de SSH. Este servidor proporciona herramientas para ejecutar comandos, gestionar archivos, monitorear servicios y analizar registros en sistemas Linux remotos.
Instalación
Docker (Recomendado)
- Copie el archivo de entorno y configure sus credenciales SSH:
cp env.example .env
# Edit .env with your SSH server details
- Construya y ejecute con Docker Compose:
docker compose up -d
Instalación Manual
- Instale las dependencias:
pip install -r requirements.txt
- Establezca las variables de entorno:
export SSH_HOST=your-server.example.com
export SSH_USER=root
export SSH_PASSWORD=your_password
# OR
export SSH_KEY_FILE=/path/to/private/key
- Ejecute el servidor:
python -m ssh_mcp_server.server
Integración con AnythingLLM
Agregue la siguiente configuración a su anythingllm_mcp_servers.json:
{
"mcpServers": {
"ssh-mcp-server": {
"name": "SSH MCP Server",
"type": "streamable",
"url": "http://ssh-mcp-server:8000/mcp",
"auth_token": null,
"enabled": true
}
}
}
Configuración
Variables de Entorno
| Variable | Descripción | Por defecto |
|---|---|---|
SSH_HOST | Hostname o IP del servidor de destino | localhost |
SSH_USER | Nombre de usuario SSH | root |
SSH_PASSWORD | Contraseña SSH | - |
SSH_KEY_FILE | Ruta a la clave privada SSH | - |
SSH_PORT | Puerto SSH | 22 |
SERVER_HOST | Dirección de enlace del servidor MCP | 0.0.0.0 |
SERVER_PORT | Puerto del servidor MCP | 8000 |
Autenticación
El servidor admite dos métodos de autenticación:
- Autenticación por contraseña: Establezca
SSH_PASSWORDen su entorno - Autenticación basada en clave: Establezca
SSH_KEY_FILEa la ruta de su clave privada
Uso
Prueba básica de conexión
# Test SSH connection
test_ssh_connection(
hostname="server.example.com",
username="root",
password="your_password"
)
Ejecutar comandos
# Execute a simple command
execute_command("ls -la /var/log")
# Execute with sudo
execute_command("systemctl status nginx", use_sudo=True)
Operaciones de archivos
# Read a file
read_file("/etc/nginx/nginx.conf")
# Write to a file
write_file("/tmp/test.txt", "Hello World!")
# List directory contents
list_directory("/var/log")
Gestión de servicios
# Check service status
get_service_status("nginx")
# Start a service
start_service("nginx")
# Stop a service
stop_service("nginx")
# Restart a service
restart_service("nginx")
Gestión de procesos
# List all processes
list_processes()
# List specific processes
list_processes(filter_by="nginx")
# Kill a process
kill_process("12345", signal="TERM")
Herramientas de red
# Check if port is open
check_port(80)
# Get network connections
get_network_connections()
Análisis de registros
# Tail a log file
tail_log("/var/log/nginx/access.log", lines=100)
# Search in logs
search_log("/var/log/nginx/error.log", "error")
Consideraciones de Seguridad
- Utilice autenticación basada en clave SSH cuando sea posible
- Limite el acceso SSH a usuarios e IPs específicos
- Rote regularmente las claves y contraseñas SSH
- Monitoree los registros de acceso SSH
- Use sudo con prudencia y limite los privilegios de sudo
Solución de Problemas
Problemas de Conexión
- Autenticación fallida: Verifique el nombre de usuario, la contraseña o el archivo de clave
- Conexión rechazada: Verifique que el servicio SSH esté en ejecución y que el puerto sea correcto
- Verificación de clave de host: Asegúrese de que la clave de host del servidor sea de confianza
Problemas de Permisos
- Acceso a archivo denegado: Verifique los permisos y la propiedad de los archivos
- Se requiere sudo: Use
use_sudo=Truepara operaciones privilegiadas - Gestión de servicios: Asegúrese de que el usuario tenga los permisos adecuados de systemd
Problemas de Rendimiento
- Comandos lentos: Aumente los valores de tiempo de espera para comandos de larga duración
- Tiempos de espera de conexión: Verifique la conectividad de red y la carga del servidor
- Uso de recursos: Monitoree los recursos del servidor durante las operaciones
Referencia de la API
El servidor expone las siguientes herramientas MCP:
test_ssh_connection: Probar conectividad SSHget_server_info: Obtener información del sistemaexecute_command: Ejecutar comandosread_file: Leer contenido de archivoswrite_file: Escribir contenido de archivoslist_directory: Listar contenido de directoriosget_service_status: Verificar estado del serviciostart_service: Iniciar un serviciostop_service: Detener un serviciorestart_service: Reiniciar un serviciolist_processes: Listar procesos en ejecuciónkill_process: Terminar un procesocheck_port: Verificar estado del puertoget_network_connections: Obtener conexiones de redtail_log: Seguir archivos de registrosearch_log: Buscar en archivos de registro
Licencia
Este proyecto está licenciado bajo la Licencia MIT.