Teleport: tsh ๋กœ๊ทธ์ธ-Teleport v5.0.0์˜ rpc ์˜ค๋ฅ˜

์— ๋งŒ๋“  2020๋…„ 12์›” 04์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: gravitational/teleport

๊ธฐ์ˆ 

๋ฌด์Šจ ์ผ์ด ์ผ์–ด ๋‚ฌ์Šต๋‹ˆ๊นŒ?
cli์—์„œ tsh login --proxy=<my_proxy> ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

>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

์˜ˆ์ƒ ํ•œ ์ผ :
๋‚˜๋Š” ์ด๊ฒƒ์ด ์„ฑ๊ณต์ ์œผ๋กœ ํ…”๋ ˆํฌํŠธ์— ๋กœ๊ทธ์ธ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์žฌํ˜„ ๋ฐฉ๋ฒ• (๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ์ •ํ™•ํ•˜๊ฒŒ) :
MacO์—์„œ-

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

ํ™˜๊ฒฝ

  • Teleport ๋ฒ„์ „ ( teleport version ) : Teleport v5.0.0 git : go1.15.5
  • Tsh ๋ฒ„์ „ ( tsh version ) : Teleport v5.0.0 git : go1.15.5
  • OS (์˜ˆ : /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์— ํŒจํ‚ค์ง€ ๋œ ๋ฒ„์ „์„ ์ œ์–ด ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ๋กœ ์ธํ•ด ๊ณ ์žฅ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋กํ•˜๋Š” ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์€ https://goteleport.com/teleport/download ์—์„œ ๊ณต์‹ ์„œ๋ช…๋˜๊ณ  ๊ณต์ฆ ๋œ tsh PKG์˜ ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ท€ํ•˜์™€ ๊ท€ํ•˜์˜ ํŒ€ @webvictim์˜ ์‘๋‹ต์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฒฐ์˜์•ˆ์€ ์œ„ ๋งํฌ์—์„œ ํ…”๋ ˆํฌํŠธ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@rmoles / @webvictim ๋‚ด 2p๋Š” ์ตœ์‹  tsh ๋ฒ„์ „์ด ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ค์ˆ˜๋ฅผ ์•Œ๋ฆฌ ๋„๋ก ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐœ์„ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „์ด ์›๊ฒฉ ๋ฒ„์ „๋ณด๋‹ค ์ตœ์‹  ๋ฒ„์ „ ์ž„). ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ์›๊ฒฉ ์—”๋“œ ํฌ์ธํŠธ๊ฐ€ ํ…”๋ ˆํฌํŠธ 4.4์ด์ง€๋งŒ ๊ณต์‹ ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์—์„œ ์ตœ์‹  tsh ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ ธ ์™”๊ธฐ ๋•Œ๋ฌธ์— ์˜จ ๋ณด๋”ฉ ์šด์˜์ž๊ฐ€์ด ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

authVersion์„ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ์ด ์ธ์ฆ ๋œ API ์š”์ฒญ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์ธ์ฆ๋˜์ง€ ์•Š์€ API ์š”์ฒญ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ด์ƒ์ ์ธ ์†”๋ฃจ์…˜์€ tsh ๊ฐ€ ์›๊ฒฉ ๋ฒ„์ „์„ ์ž์ฒด ๋ฒ„์ „์— ๋Œ€ํ•ด ํ™•์ธํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž์‹ ์˜ ๋ฒ„์ „์ด ๋‹ค์Œ๋ณด๋‹ค ์ตœ์‹  ๋ฒ„์ „์ž„์„ ๊ฒฝ๊ณ  ํ•  ์ˆ˜์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์›๊ฒฉ.

MacOs์— MacOS .pkg ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๋‹ค์Œ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. โ€œ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 ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ๋นŒ๋“œ๋˜๋Š” ๋ฐฉ์‹์ด ํ˜„์žฌ MacOS์˜ ์„œ๋ช… ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— teleport-*.pkg ํŒŒ์ผ์€ ์„œ๋ช…๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ฐœ ๋œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. # 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 ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฒ„์ „์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฒฝ๊ณ ํ•˜๋Š” ๋…ผ๋ฆฌ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ tsh 5.x๋ฅผ ํ…”๋ ˆํฌํŠธ 4.x ์„œ๋ฒ„์— ๋Œ€ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ max_client_version์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰