O que Trabalho Remoto via SSH faz?
Os detalhes da conexão estão em ssh.md na pasta do projeto. Leia-o antes de cada sessão remota. Nunca adivinhe hosts, usuários, portas, caminhos de chave ou senhas.
Quando Ativar
- O usuário pede para conectar, fazer login ou executar algo em uma máquina remota
- O usuário pede para inspecionar, editar, construir ou testar um projeto remoto
- O usuário menciona um servidor, VPS ou host remoto e espera acesso SSH
Passo 1: Localizar ssh.md
A pasta do projeto é git rev-parse --show-toplevel, ou o diretório atual se isso falhar. ssh.md sempre reside em <pasta_do_projeto>/ssh.md.
Se não existir, crie-o a partir do template e informe ao usuário para preenchê-lo:
- Encontre
ssh.example.md. Ele está na pasta desta skill, que depende do agente. Verifique estes caminhos em ordem e use o primeiro que existir:.agents/skills/remote-work-ssh/,.claude/skills/remote-work-ssh/,.opencode/skills/remote-work-ssh/,~/.agents/skills/remote-work-ssh/,~/.claude/skills/remote-work-ssh/,~/.config/opencode/skills/remote-work-ssh/. Se nenhum existir, executefind ~ -path '*remote-work-ssh*' -name ssh.example.md 2>/dev/null | head -n 1. - Copie-o para
<pasta_do_projeto>/ssh.md. - Adicione
ssh.mdao.gitignoredo projeto se estiver faltando. Crie.gitignorese necessário. - Pare e diga ao usuário para preencher
ssh.md.
Passo 2: Validar a Configuração
ssh.md contém um bloco YAML. Verifique estes campos:
authdeve seralias,keyoupassword.remote_project_pathdeve estar definido.- Campos para o método escolhido devem estar definidos:
auth | Campos obrigatórios |
|---|---|
alias | alias |
key | host, user, identity_file (port padrão é 22) |
password | host, user, password_env (port padrão é 22) |
Se um campo obrigatório estiver faltando ou auth for desconhecido, pare e informe exatamente qual campo está errado. Não recorra a outro método.
Passo 3: Conectar
alias
Resolva a entrada primeiro, depois conecte:
ssh -G <alias> | grep -E '^(hostname|user|port) '
ssh -o BatchMode=yes <alias> 'hostname && whoami'
key
- Confirme que
identity_fileexiste. Se não existir, pare. - Use apenas essa chave:
ssh -o BatchMode=yes -o IdentitiesOnly=yes -i <identity_file> -p <port> <user>@<host> 'hostname && whoami'
- Se
proxy_jumpestiver definido, adicione-J <proxy_jump>.
password
- Verifique se
sshpassestá instalado comcommand -v sshpass. Se estiver faltando, pare e diga ao usuário para instalá-lo. - Verifique se a variável de ambiente nomeada por
password_envestá definida, sem imprimir seu valor. - Passe o valor para
sshpassatravés da variável de ambienteSSHPASSe-e. Não coloque a senha em um argumento de linha de comando ou em qualquer saída. - Desabilite tentativas baseadas em chave para que apenas a senha seja usada:
SSHPASS="$(printenv <password_env>)" sshpass -e ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password -p <port> <user>@<host> 'hostname && whoami'
- Se
proxy_jumpestiver definido, adicione-J <proxy_jump>. - Não use
BatchMode=yesaqui, pois isso desabilita a autenticação por senha.
Chaves de host (todos os métodos)
- Se a chave do host for desconhecida ou tiver mudado, pare. Mostre a impressão digital e peça ao usuário para verificá-la.
- Nunca defina
StrictHostKeyChecking=noou opções similares que pulem a verificação.
Passo 4: Trabalhar no Projeto Remoto
- Execute cada comando dentro de
remote_project_path, por exemplossh ... 'cd <remote_project_path> && <command>'. Coloque o caminho entre aspas. - Antes de assumir que uma ferramenta existe na máquina remota, verifique seus manifestos ou execute
command -v <tool>. - Não escreva fora de
remote_project_patha menos que o usuário solicite.
Regras de Segurança
- Pergunte antes de comandos destrutivos como
rm -rf, force pushes, descarte de bancos de dados, operações de disco ou reinicializações de serviços. - Nunca imprima, copie, registre ou confirme senhas, conteúdos de chave ou tokens.
- Não armazene credenciais em nenhum arquivo que não seja o
ssh.mddo projeto ou o ambiente. - Não execute comandos na máquina remota que o usuário não tenha solicitado.
Operações Não Suportadas
- Armazenar senhas em arquivos rastreados ou nesta skill
- Lidar com MFA interativo ou códigos de uso único em nome do usuário
- Desabilitar verificação de chave de host
- Conectar a hosts que não estão definidos em
ssh.md