Teleport: login tsh - erro rpc no Teleport v5.0.0

Criado em 4 dez. 2020  ·  10Comentários  ·  Fonte: gravitational/teleport

Descrição

O que aconteceu :
Ao executar tsh login --proxy=<my_proxy> no cli, estou obtendo a seguinte saída:

>tsh login --proxy=<my_proxy>
If browser window does not open automatically, open it by clicking on the link:
 http://127.0.0.1:53817/<GUID>
error: rpc error: code = Unimplemented desc = unknown method GetKubeServices for service proto.AuthService

O que você esperava que acontecesse :
Eu esperava que isso pudesse fazer o login com sucesso para teletransportar

Como reproduzi-lo (o mais mínimo e precisamente possível) :
em MacOs -

>brew install teleport
>tsh version
Teleport v5.0.0 git: go1.15.5
>tsh login --proxy=<my_proxy>

Ambiente

  • Versão do teleporte (use teleport version ): Teleporte v5.0.0 git: go1.15.5
  • Versão Tsh (use tsh version ): Teleport v5.0.0 git: go1.15.5
  • SO (por exemplo, de /etc/os-release ): macOS Catalina v 10.15.7

  • Onde você está executando o Teleport? (por exemplo, AWS, GCP, Hardware dedicado): lado do servidor v4

Registros de depuração relevantes, se aplicável

  • tsh login --proxy=<my_proxy> --debug
INFO [CLIENT]    Successful auth with proxy teleport.lacework.net:3023 client/api.go:1672
<redacted>
DEBU [AUTH]      GRPC(CLIENT): keep alive 1m0s count: 3. auth/clt.go:320
DEBU [CLIENT]    Client  is connecting to auth server on cluster "teleport.lacework.net". client/client.go:473

ERROR REPORT:
Original Error: *status.statusError rpc error: code = Unimplemented desc = unknown method GetKubeServices for service proto.AuthService
Stack Trace:
    /private/tmp/teleport-20201127-89185-jfx2dt/teleport-5.0.0/src/github.com/gravitational/teleport/lib/auth/clt.go:2978 github.com/gravitational/teleport/lib/auth.(*Client).GetKubeServices
    /private/tmp/teleport-20201127-89185-jfx2dt/teleport-5.0.0/src/github.com/gravitational/teleport/lib/kube/utils/utils.go:155 github.com/gravitational/teleport/lib/kube/utils.KubeClusterNames
    /private/tmp/teleport-20201127-89185-jfx2dt/teleport-5.0.0/src/github.com/gravitational/teleport/lib/kube/kubeconfig/kubeconfig.go:101 github.com/gravitational/teleport/lib/kube/kubeconfig.UpdateWithClient
    /private/tmp/teleport-20201127-89185-jfx2dt/teleport-5.0.0/src/github.com/gravitational/teleport/tool/tsh/tsh.go:609 main.onLogin
    /private/tmp/teleport-20201127-89185-jfx2dt/teleport-5.0.0/src/github.com/gravitational/teleport/tool/tsh/tsh.go:431 main.Run
    /private/tmp/teleport-20201127-89185-jfx2dt/teleport-5.0.0/src/github.com/gravitational/teleport/tool/tsh/tsh.go:212 main.main
    /usr/local/opt/go/libexec/src/runtime/proc.go:213 runtime.main
    /usr/local/opt/go/libexec/src/runtime/asm_amd64.s:1375 runtime.goexit
User Message:

Qualquer ajuda seria muito apreciada, pois parece que não é possível fazer o downgrade de versões via homebrew no momento.

bug tsh ux

Comentários muito úteis

Estou reabrindo o problema para rastrear isso como uma melhoria necessária para tsh .

Enquanto isso, a solução alternativa para qualquer pessoa que encontre esse problema é fazer o downgrade de sua versão de tsh de 5.xx para 4.4.x.

Todos 10 comentários

A solução alternativa atual que estou usando é brew uninstall teleport e instalar manualmente o tsh v4.4.5 https://get.gravitational.com/tsh-4.4.5.pkg

Parece que o problema está no uso do servidor de autenticação v4. Conforme explicado no slack Teleport v5 it's backwards compatible, but not forwards compatible ( old clients will work with new servers, but new clients may not work with old servers)

Não temos nenhum controle sobre a versão empacotada no Homebrew. A maneira mais segura de garantir que nada quebre devido a atualizações inesperadas é instalar a versão correta de nosso oficial assinado e autenticado tsh PKG em https://goteleport.com/teleport/download

Agradeço a resposta sua e de sua equipe @webvictim. Concluindo, a resolução é instalar o pacote de teletransporte do link acima.

@rmoles / @webvictim meu 2p seria que se as versões tsh recentes não forem compatíveis com as versões anteriores, a mensagem de erro deve ser melhorada para apontar o erro do usuário (a versão do cliente é mais recente que a remota). Já vi vários de nossos operadores de integração acertarem esse erro porque o endpoint remoto ao qual estão tentando se conectar é o teletransporte 4.4, mas eles acabaram de buscar o pacote tsh mais recente na página de download oficial.

Não sei se a busca de authVersion é uma solicitação de API autenticada ou não, mas a solução ideal seria se tsh pudesse comparar a versão remota com a sua própria e avisar ao usuário que sua versão é mais recente que o remoto.

Para sua informação, a instalação do instalador .pkg do MacOS em MacOs está bloqueada com o seguinte erro: “teleport-4.4.5.pkg” cannot be opened because it is from an unidentified developer.
As etapas para instalar de qualquer maneira podem ser encontradas aqui: https://support.apple.com/en-gb/guide/mac-help/mh40616/mac

@rmoles teleport-4.4.5.pkg e tsh-4.4.5.pkg são coisas diferentes.

Os arquivos teleport-*.pkg não são assinados, porque a forma como o binário do Teleport é construído não é compatível com os requisitos de assinatura do MacOS. Temos um problema aberto para corrigir isso aqui: # 3158

Os arquivos tsh-*.pkg são assinados com um certificado oficial de desenvolvedor e autenticados pela Apple, para que sejam instalados sem problemas.

@dnwe eu concordo. Na verdade, já expomos a versão mínima do cliente por meio de uma chamada de API não autenticada:

$ curl -s https://teleport.example.com:3080/v1/webapi/ping | jq
{
  "auth": {
    "type": "github",
    "second_factor": "u2f",
    "github": {
      "name": "github",
      "display": "Github"
    }
  },
  "proxy": {
    "kube": {},
    "ssh": {
      "listen_addr": "0.0.0.0:3023",
      "tunnel_listen_addr": "0.0.0.0:3080",
      "public_addr": "teleport.example.com:3080",
      "ssh_public_addr": "teleport.example.com:3023",
      "ssh_tunnel_public_addr": "teleport.example.com:3080"
    }
  },
  "server_version": "5.0.0",
  "min_client_version": "3.0.0"
}

Analisarei por que isso não está acionando uma lógica para avisar tsh usuários de que sua versão não funcionará.

Estou reabrindo o problema para rastrear isso como uma melhoria necessária para tsh .

Enquanto isso, a solução alternativa para qualquer pessoa que encontre esse problema é fazer o downgrade de sua versão de tsh de 5.xx para 4.4.x.

@dnwe eu concordo. Na verdade, já expomos a versão mínima do cliente por meio de uma chamada de API não autenticada:

...

Analisarei por que isso não está acionando uma lógica para avisar tsh usuários de que sua versão não funcionará.

Neste caso, é uma max_client_version de que precisaríamos, para avisar aos usuários que o tsh 5.x não pode ser usado no servidor de teleporte 4.x

Esta página foi útil?
0 / 5 - 0 avaliações