Teleport CLI

Телепорт можно установить различными способами в том числе и пакетами для OS, но так как мне требуется только авторизация для использования в коде и работа с командно строкой то проще всего скачать tar.gz файл и получить таким образом нужные бинарники.

Важно

Сначала следует узнать версию самого сервиса teleport запущенного в нашей инфре и скачать ровно ту же. Даже небольшие расхождения приводят к несовместимости API.

tsh

Основная утилита для работы из CLI это tsh.

Аутентификация в teleport

./tsh login --proxy=teleport.host --user=mylogin --skip-version-check --auth=local --ttl 5256000

1

Teleport MTS

Если добавить ключ -o <имя_файла> то будет сгенерирован текстовый файл содержащий в себе все необходимые сертификаты для работы с телепортом, что потребуется позже для Teleport. Golang.

Настройка сохраняются в ~/.tsh/. Из интересного там находится файл current-profile который указывает на активный профиль если настроено подключение более чем к одному телепорту.

Основные команды

env

./tsh env --proxy teleport.***:443

выведет список переменных которые надо задать для работы с этим proxy.

ls

Выводит список доступных через этот proxy хостов.

 ./tsh ls --proxy teleport.***.ru:443
 
Node Name                                                     Address    Labels                                                                                                                                                                
------------------------------------------------------------- ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
klktest-ch-1.******.******.mts.ru Tunnel   bios=c4b72c42-29c3-d71d-0a16-954d87a1a037,clickhouse-l3=true,hostname=klktest-ch-1,paas-l1=true,stand_slug=****-unix-inside-0300s2,type=dataops,unix-admin=true 

Результаты поиска можно фильтровать:

./tsh ls --proxy teleport.***.ru:443 --query='labels["type"] == "dataops"'

Внутри одинарных кавычек фильтра допускаются следующие операторы ==, !=, && и ||.

ssh

Позволяет подключиться к хосту за телепортом. Например так:

./tsh ssh user@<some_host_from_tsh_ls>.ru

config

Покажет кусочек конфига ~/.ssh/config который если туда добавить по идее позволит исползьзовать для телепорт хостов обычный ssh вместо ./tsh ssh. Но у меня не завелось. Похоже надо добавлять эти записи в DNS для начала.

Footnotes

  1. auth=local актуально для внутренней инсталляции.