Teleport: tsh login - ошибка rpc в Teleport v5.0.0

Созданный на 4 дек. 2020  ·  10Комментарии  ·  Источник: gravitational/teleport

Описание

Что случилось :
При запуске tsh login --proxy=<my_proxy> на cli я получаю следующий вывод:

>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

Что вы ожидали :
Я ожидал, что это приведет к успешному входу в телепортацию

Как это воспроизвести (максимально минимально и точно) :
на MacOs -

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

Среда

  • Версия телепорта (используйте teleport version ): Teleport v5.0.0 git: go1.15.5
  • Версия tsh (используйте tsh version ): Teleport v5.0.0 git: go1.15.5
  • ОС (например, из /etc/os-release ): macOS Catalina v 10.15.7

  • Где вы запускаете Teleport? (например, AWS, GCP, выделенное оборудование): на стороне сервера v4

Соответствующие журналы отладки, если применимо

  • 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:

Любая помощь будет принята с благодарностью, поскольку, похоже, в настоящее время невозможно перейти на более раннюю версию с помощью homebrew.

bug tsh ux

Самый полезный комментарий

Я снова открываю проблему, чтобы отследить это как улучшение, необходимое для tsh .

Тем временем обходным путем для всех, кто сталкивается с этой проблемой, является понижение версии вашей версии tsh с 5.xx до 4.4.x.

Все 10 Комментарий

Текущий обходной путь, который я использую, - brew uninstall teleport и вручную установить tsh v4.4.5 https://get.gravitational.com/tsh-4.4.5.pkg.

Похоже, проблема заключается в использовании сервера аутентификации v4. Как объясняется в 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)

У нас нет никакого контроля над версией, упакованной в Homebrew. Самый безопасный способ убедиться, что ничего не сломается из-за неожиданных обновлений, - это установить правильную версию нашего официального подписанного, нотариально заверенного tsh PKG с https://goteleport.com/teleport/download

Ценю ответ от вас и вашей команды @webvictim. Закрытие, так как решение - установить пакет телепорта по указанной выше ссылке.

@rmoles / @webvictim мой 2p будет заключаться в том, что если более новые версии tsh не имеют обратной совместимости, тогда сообщение об ошибке должно быть улучшено, чтобы указать пользователю на его ошибку (версия клиента новее, чем удаленная). Я видел, как несколько наших операторов по подключению сталкивались с этой ошибкой, потому что удаленная конечная точка, к которой они пытаются подключиться, - это Teleport 4.4, но они только что загрузили последний пакет tsh с официальной страницы загрузки .

Я не знаю, является ли получение authVersion аутентифицированным или не аутентифицированным запросом API, но идеальным решением было бы, если бы tsh мог бы проверить удаленную версию на свою собственную и предупредить пользователя, что их версия новее, чем пульт.

К вашему сведению, установка установщика MacOS .pkg на MacOs блокируется из-за следующей ошибки: “teleport-4.4.5.pkg” cannot be opened because it is from an unidentified developer.
Действия по установке в любом случае можно найти здесь: https://support.apple.com/en-gb/guide/mac-help/mh40616/mac

@rmoles teleport-4.4.5.pkg и tsh-4.4.5.pkg на самом деле разные вещи.

Файлы teleport-*.pkg не подписаны, потому что способ создания двоичного файла Teleport в настоящее время несовместим с требованиями MacOS к подписи. У нас есть открытая проблема, чтобы исправить это здесь: # 3158

Файлы tsh-*.pkg подписаны официальным сертификатом разработчика и нотариально заверены Apple, поэтому они будут установлены без каких-либо проблем.

@dnwe Согласен. На самом деле мы уже предоставляем минимальную версию клиента через неаутентифицированный вызов API:

$ 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"
}

Я выясню, почему это не запускает логику, предупреждающую пользователей tsh что их версия не будет работать.

Я снова открываю проблему, чтобы отследить это как улучшение, необходимое для tsh .

Тем временем обходным путем для всех, кто сталкивается с этой проблемой, является понижение версии вашей версии tsh с 5.xx до 4.4.x.

@dnwe Согласен. На самом деле мы уже предоставляем минимальную версию клиента через неаутентифицированный вызов API:

...

Я выясню, почему это не запускает логику, предупреждающую пользователей tsh что их версия не будет работать.

В этом случае нам понадобится max_client_version, чтобы предупредить пользователей, что tsh 5.x не может использоваться против сервера Teleport 4.x

Была ли эта страница полезной?
0 / 5 - 0 рейтинги