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
Если добавить ключ -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
-
auth=local
актуально для внутренней инсталляции. ↩