Como Usar o GitHub Copilot com VS Code Remote-SSH em um Host Bastion
🔍 WiseChecker

Como Usar o GitHub Copilot com VS Code Remote-SSH em um Host Bastion

Você precisa usar o GitHub Copilot enquanto está conectado a um servidor SSH remoto através de um host bastion, mas a extensão do Copilot falha ao ativar ou mostra erros de rede. Um host bastion cria uma caixa de salto que adiciona uma camada de rede extra entre sua máquina local e o servidor de destino. Este artigo explica como configurar o VS Code Remote-SSH e o GitHub Copilot para funcionar de forma confiável através de um túnel de host bastion.

Principais Conclusões: Configurando o GitHub Copilot Através de um Host Bastion

  • Arquivo de configuração do VS Code Remote-SSH ~/.ssh/config: Adicione diretivas ProxyCommand ou ProxyJump para rotear conexões através do host bastion.
  • Configurações da extensão GitHub Copilot > Remote.SSH: Local Server Port: Defina uma porta local fixa para evitar conflitos de porta que quebram a autenticação do Copilot.
  • Encaminhamento do agente SSH com ForwardAgent yes: Permite que os tokens de autenticação do Copilot passem do bastion para o host de destino.

ADVERTISEMENT

Como o GitHub Copilot se Comunica Através do Remote-SSH

O GitHub Copilot roda como uma extensão do VS Code que envia contexto de código para os servidores do GitHub e recebe sugestões de conclusão. Quando você se conecta a um workspace remoto usando Remote-SSH, a extensão roda no host remoto. O host remoto deve ter acesso HTTPS de saída para api.github.com e copilot-proxy.githubusercontent.com na porta 443.

Um host bastion fica entre sua máquina local e o servidor de destino. O tráfego do VS Code na sua máquina local vai primeiro para o host bastion, depois o bastion encaminha para o servidor de destino. O Copilot no servidor de destino deve alcançar os servidores do GitHub diretamente. Se o servidor de destino não tiver acesso direto à internet, o Copilot falha com erros de conexão.

O requisito principal é que a extensão do GitHub Copilot no host remoto possa estabelecer uma conexão TLS com os servidores do GitHub. O host bastion em si não precisa rodar o Copilot. Apenas o servidor de destino precisa da extensão e acesso à rede.

Quando o Copilot Falha em uma Configuração com Host Bastion

Sinais comuns de falha incluem o ícone do Copilot mostrando um ponto de exclamação vermelho, a barra de status mostrando “Copilot: Offline,” ou sugestões de conclusão que nunca aparecem. Isso acontece porque o host remoto não consegue alcançar os servidores do GitHub, o túnel SSH bloqueia conexões WebSocket, ou o token de autenticação do Copilot não se propaga através do bastion.

Passos para Configurar o GitHub Copilot com Remote-SSH e um Host Bastion

Siga estes passos em ordem. Cada passo se baseia no anterior. Não pule o passo de encaminhamento do agente SSH porque ele resolve a falha de autenticação mais comum.

1. Edite o Arquivo de Configuração SSH para ProxyJump

  1. Abra seu arquivo de configuração SSH local
    No Windows, o arquivo está em C:\Users\SeuUsuario\.ssh\config. No macOS e Linux, está em ~/.ssh/config. Crie o arquivo se ele não existir.
  2. Adicione a entrada do host bastion
    Escreva:
Host bastion
    HostName bastion.example.com
    User seu-usuario-bastion
    IdentityFile ~/.ssh/id_rsa
  1. Adicione a entrada do host de destino com ProxyJump
    Escreva:
Host servidor-destino
    HostName 10.0.1.50
    User seu-usuario-destino
    IdentityFile ~/.ssh/id_rsa
    ProxyJump bastion

A diretiva ProxyJump diz ao SSH para conectar ao bastion primeiro, depois pular para o servidor de destino. O VS Code Remote-SSH lê esta configuração automaticamente.

2. Habilite o Encaminhamento do Agente SSH

  1. Adicione ForwardAgent à entrada do host de destino
    No mesmo arquivo de configuração SSH, adicione esta linha sob o bloco servidor-destino:
Host servidor-destino
    HostName 10.0.1.50
    User seu-usuario-destino
    IdentityFile ~/.ssh/id_rsa
    ProxyJump bastion
    ForwardAgent yes
  1. Inicie o agente SSH na sua máquina local
    No macOS e Linux, execute eval "$(ssh-agent -s)". No Windows, certifique-se de que o serviço OpenSSH Authentication Agent esteja em execução. Adicione sua chave privada com ssh-add ~/.ssh/id_rsa.
  2. Teste o encaminhamento do agente
    Conecte-se ao servidor de destino manualmente: ssh servidor-destino. Em seguida, execute ssh-add -l no servidor de destino. Você deve ver a impressão digital da sua chave. Se você vir “The agent has no identities,” o encaminhamento do agente não está funcionando.

3. Defina uma Porta de Servidor Local Fixa nas Configurações do Remote-SSH

  1. Abra as configurações do VS Code
    Pressione Ctrl+, no Windows ou Cmd+, no macOS. Pesquise por “Remote.SSH: Local Server Port.”
  2. Defina um número de porta fixo
    Digite uma porta como 22000. Isso impede que o VS Code use uma porta aleatória que possa conflitar com o túnel do bastion. Salve a configuração.

4. Instale o GitHub Copilot no Host Remoto

  1. Conecte o VS Code ao servidor de destino
    Abra o VS Code. Pressione Ctrl+Shift+P, digite “Remote-SSH: Connect to Host,” e selecione “servidor-destino.” O VS Code abre uma nova janela conectada ao host remoto.
  2. Instale a extensão GitHub Copilot no host remoto
    Na visão de Extensões, pesquise por GitHub Copilot. Clique em Instalar em SSH: servidor-destino. Não instale apenas localmente. A extensão deve rodar no host remoto.
  3. Entre no GitHub
    Clique no ícone do Copilot na barra de status. Uma janela do navegador abre na sua máquina local. Autorize a extensão. O token é encaminhado através do agente SSH para o host remoto.

5. Verifique a Conectividade do Copilot

  1. Verifique o status do Copilot
    Olhe a barra de status no canto inferior direito. Deve mostrar “Copilot: Pronto” com uma marca de verificação verde. Se mostrar “Copilot: Offline,” o host remoto não consegue alcançar os servidores do GitHub.
  2. Teste uma conclusão
    Abra um arquivo no host remoto. Digite um comentário como // função para calcular fibonacci e pressione Enter. O Copilot deve sugerir código dentro de dois segundos.

ADVERTISEMENT

Problemas Comuns ao Usar o Copilot Através de um Host Bastion

O Copilot Mostra “Offline” no Host Remoto

O servidor de destino remoto não tem acesso HTTPS de saída para os servidores do GitHub. Verifique as regras de rede no servidor de destino. Permita tráfego de saída para api.github.com e copilot-proxy.githubusercontent.com na porta 443. Se o servidor de destino usa um proxy corporativo, configure as variáveis de ambiente HTTP_PROXY e HTTPS_PROXY no host remoto. Reinicie o VS Code Remote-SSH após definir as variáveis.

A Autenticação do Copilot Falha Após Reconectar

O encaminhamento do agente SSH para de funcionar quando você fecha o terminal ou reinicia sua máquina local. Reinicie o agente SSH com ssh-add e reconecte o VS Code Remote-SSH. Se o problema persistir, exclua a sessão remota antiga do VS Code: pressione Ctrl+Shift+P, selecione “Remote-SSH: Close Remote Connection,” e reconecte.

As Conclusões do Copilot São Lentas ou Intermitentes

A latência através do host bastion pode atrasar as conclusões. Defina a configuração remote.SSH.connectTimeout para um valor maior, como 30 segundos. Nas configurações do VS Code, pesquise por “Remote.SSH: Connect Timeout” e defina para 30. Também garanta que o host bastion tenha largura de banda suficiente. Um link de 10 Mbps é o mínimo para conclusões responsivas.

O VS Code Remote-SSH Falha ao Conectar ao Servidor de Destino

O arquivo de configuração SSH tem um erro de sintaxe ou o host bastion está inacessível. Teste a conexão manualmente: ssh -J bastion servidor-destino. Se funcionar, a configuração está correta. Se falhar, verifique o hostname do bastion, porta e regras de firewall. O host bastion deve aceitar conexões SSH do seu endereço IP local.

Conexão Direta do GitHub Copilot vs Conexão com Host Bastion

Item Conexão SSH Direta Conexão com Host Bastion
Caminho de rede Máquina local para servidor de destino Máquina local para host bastion para servidor de destino
Requisito de configuração SSH Entrada Host com apenas HostName Entrada Host com ProxyJump ou ProxyCommand
Encaminhamento do agente Opcional Necessário para propagação do token do Copilot
Local da extensão do Copilot Host remoto Host remoto
Acesso de saída necessário Servidor de destino para servidores do GitHub Servidor de destino para servidores do GitHub
Impacto na latência Mínimo Maior devido ao salto extra

A configuração de conexão direta é mais simples e rápida. Use-a sempre que o servidor de destino for alcançável da sua máquina local sem um host de salto. A configuração com host bastion requer mais etapas de configuração, mas é necessária quando o servidor de destino está em uma sub-rede privada.

ADVERTISEMENT

Conclusão

Agora você pode usar o GitHub Copilot com VS Code Remote-SSH através de um host bastion configurando ProxyJump no arquivo de configuração SSH e habilitando o encaminhamento do agente SSH. A configuração de porta de servidor local fixa evita quedas de conexão durante sessões longas. Para desempenho ideal, garanta que o servidor de destino tenha acesso HTTPS de saída direto para os servidores do GitHub e defina o tempo limite de conexão do Remote.SSH para 30 segundos. Se você gerencia vários hosts bastion, crie entradas de configuração SSH separadas para cada servidor de destino para evitar conflitos de configuração.

ADVERTISEMENT