SSH Server MCP
Um servidor MCP que fornece ferramentas de gerenciamento remoto baseadas em SSH, atuando como proxy.
GitHub
6
Experimente este MCPPatrocinadoDocumentação
Servidor MCP SSH
Um servidor Model Context Protocol (MCP) para gerenciar servidores Linux via SSH. Este servidor fornece ferramentas para executar comandos, gerenciar arquivos, monitorar serviços e analisar logs em sistemas Linux remotos.
Instalação
Docker (Recomendado)
- Copie o arquivo de ambiente e configure suas credenciais SSH:
cp env.example .env
# Edit .env with your SSH server details
- Compile e execute com Docker Compose:
docker compose up -d
Instalação Manual
- Instale as dependências:
pip install -r requirements.txt
- Defina as variáveis de ambiente:
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
- Execute o servidor:
python -m ssh_mcp_server.server
Integração com AnythingLLM
Adicione a seguinte configuração ao seu 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
}
}
}
Configuração
Variáveis de Ambiente
| Variável | Descrição | Padrão |
|---|---|---|
SSH_HOST | Hostname ou IP do servidor de destino | localhost |
SSH_USER | Nome de usuário SSH | root |
SSH_PASSWORD | Senha SSH | - |
SSH_KEY_FILE | Caminho para a chave privada SSH | - |
SSH_PORT | Porta SSH | 22 |
SERVER_HOST | Endereço de bind do servidor MCP | 0.0.0.0 |
SERVER_PORT | Porta do servidor MCP | 8000 |
Autenticação
O servidor suporta dois métodos de autenticação:
- Autenticação por Senha: Defina
SSH_PASSWORDno seu ambiente - Autenticação por Chave: Defina
SSH_KEY_FILEpara o caminho da sua chave privada
Uso
Teste Básico de Conexão
# Test SSH connection
test_ssh_connection(
hostname="server.example.com",
username="root",
password="your_password"
)
Executar Comandos
# Execute a simple command
execute_command("ls -la /var/log")
# Execute with sudo
execute_command("systemctl status nginx", use_sudo=True)
Operações com Arquivos
# 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")
Gerenciamento de Serviços
# 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")
Gerenciamento de Processos
# List all processes
list_processes()
# List specific processes
list_processes(filter_by="nginx")
# Kill a process
kill_process("12345", signal="TERM")
Ferramentas de Rede
# Check if port is open
check_port(80)
# Get network connections
get_network_connections()
Análise de Logs
# Tail a log file
tail_log("/var/log/nginx/access.log", lines=100)
# Search in logs
search_log("/var/log/nginx/error.log", "error")
Considerações de Segurança
- Use autenticação por chave SSH quando possível
- Limite o acesso SSH a usuários e IPs específicos
- Rotacione regularmente chaves e senhas SSH
- Monitore os logs de acesso SSH
- Use sudo com moderação e limite os privilégios de sudo
Solução de Problemas
Problemas de Conexão
- Falha na Autenticação: Verifique nome de usuário, senha ou arquivo de chave
- Conexão Recusada: Verifique se o serviço SSH está em execução e se a porta está correta
- Verificação da Chave do Host: Garanta que a chave do host do servidor seja confiável
Problemas de Permissão
- Acesso a Arquivo Negado: Verifique permissões e propriedade dos arquivos
- Sudo Necessário: Use
use_sudo=Truepara operações privilegiadas - Gerenciamento de Serviços: Garanta que o usuário tenha permissões apropriadas do systemd
Problemas de Desempenho
- Comandos Lentos: Aumente os valores de timeout para comandos de longa duração
- Timeouts de Conexão: Verifique a conectividade de rede e a carga do servidor
- Uso de Recursos: Monitore os recursos do servidor durante as operações
Referência da API
O servidor expõe as seguintes ferramentas MCP:
test_ssh_connection: Testar conectividade SSHget_server_info: Obter informações do sistemaexecute_command: Executar comandosread_file: Ler conteúdo de arquivoswrite_file: Escrever conteúdo em arquivoslist_directory: Listar conteúdo de diretóriosget_service_status: Verificar status do serviçostart_service: Iniciar um serviçostop_service: Parar um serviçorestart_service: Reiniciar um serviçolist_processes: Listar processos em execuçãokill_process: Encerrar um processocheck_port: Verificar status da portaget_network_connections: Obter conexões de redetail_log: Acompanhar arquivos de logsearch_log: Pesquisar arquivos de log
Licença
Este projeto é licenciado sob a Licença MIT.