Desafio: SSH Remote Server Setup - roadmap.sh
Projeto para provisionamento e configuração de servidor SSH local usando Vagrant e Ansible.
Este projeto instancia uma máquina virtual Ubuntu 24.04 localmente e configura o serviço SSH para acesso remoto seguro com duas chaves SSH, conforme requisitos do desafio.
- Vagrant: Gerenciamento de máquinas virtuais
- Ansible: Configuração e provisionamento
- Ubuntu 24.04: Sistema operacional do servidor
- Fail2ban: Proteção contra brute force attacks
- Vagrant
- VirtualBox ou outro provider suportado
- Python 3 + uv (para Ansible)
# Instalar uv (gerenciador de pacotes Python)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Instalar Ansible e ansible-lint
uv add ansible ansible-lint# Criar diretório para as chaves
mkdir -p keys
# Gerar primeira chave
ssh-keygen -t ed25519 -f keys/key1 -C "key1@ssh-server"
# Gerar segunda chave
ssh-keygen -t ed25519 -f keys/key2 -C "key2@ssh-server"vagrant upAdicione ao ~/.ssh/config:
Host ssh-server
HostName 192.168.56.10
User vagrant
IdentityFile ~/Github/ssh-remote-server-setup/keys/key1
# Usando chave 1
ssh -i keys/key1 vagrant@192.168.56.10
# Usando chave 2
ssh -i keys/key2 vagrant@192.168.56.10
# Usando alias (após configurar ~/.ssh/config)
ssh ssh-server- Autenticação por senha desabilitada
- Apenas autenticação por chave SSH permitida
- Fail2ban configurado para bloquear após 3 tentativas falhas em 10 minutos (bloqueio de 1 hora)
.
├── Vagrantfile
├── playbook.yml
├── inventory
├── README.md
├── .gitignore
├── keys/
│ ├── key1 # Chave privada 1 (não versionada)
│ ├── key1.pub # Chave pública 1 (não versionada)
│ ├── key2 # Chave privada 2 (não versionada)
│ ├── key2.pub # Chave pública 2 (não versionada)
│ └── .gitkeep
├── pyproject.toml
├── uv.lock
└── .venv/