id = "teleport" name = "Teleport" homepage = "https://goteleport.com/" description = "Secure access to SSH servers, Kubernetes clusters, databases and applications." executables = ["tsh"] [dotfiles] # https://goteleport.com/docs/connect-your-client/teleport-clients/tsh/ — the # user-specific tsh configuration file is $TELEPORT_HOME/config/config.yaml, # with TELEPORT_HOME defaulting to ~/.tsh. Login profiles and certificates are # also stored below that user directory. paths = ["~/.tsh/config/config.yaml"] # The same official documentation says `tsh login` saves user certificates and # keys below ~/.tsh/; the whole directory is therefore credential data. secret = ["~/.tsh/"] side_effect = false [commands] format = 1 label = "Teleport tsh" description = "Log in to a Teleport cluster, list nodes and open SSH sessions. Databases, Kubernetes, apps and access requests are left out." quality = "ai-draft" base = "fig:tsh" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/tsh.ts" license = "MIT" [[commands.subcommand]] path = ["login"] label = "Log in" description = "Log in to a cluster and fetch a session certificate." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/tsh.ts" license = "MIT" [[commands.subcommand.field]] id = "proxy" label = "Proxy address" type = "string" option = ["--proxy"] sources = ["fig"] [[commands.subcommand.field]] id = "user" label = "User" type = "string" option = ["--user"] sources = ["fig"] [[commands.subcommand.field]] id = "auth" label = "Auth connector" type = "string" option = ["--auth"] sources = ["fig"] [[commands.subcommand.field]] id = "ttl" label = "Minutes to live" type = "string" option = ["--ttl"] sources = ["fig"] [[commands.subcommand.field]] id = "insecure" label = "Skip certificate verification" type = "boolean" option = ["--insecure"] sources = ["fig"] [[commands.subcommand.field]] id = "format" label = "Output format" type = "enum" option = ["-f", "--format"] choices = [{ value = "text", label = "Text" }, { value = "json", label = "JSON" }, { value = "yaml", label = "YAML" }] sources = ["fig"] [[commands.subcommand.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["-q", "--quiet"] sources = ["fig"] [[commands.subcommand.task]] id = "login" label = "Log in to proxy" fields = ["proxy", "user", "auth"] required = ["proxy"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["proxy", "user", "auth", "ttl", "format", "quiet", "insecure"] [[commands.subcommand]] path = ["ls"] label = "List nodes" description = "List remote SSH nodes." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/tsh.ts" license = "MIT" [[commands.subcommand.field]] id = "format" label = "Output format" type = "enum" option = ["-f", "--format"] choices = [{ value = "text", label = "Text" }, { value = "json", label = "JSON" }, { value = "yaml", label = "YAML" }] sources = ["fig"] [[commands.subcommand.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["-q", "--quiet"] sources = ["fig"] [[commands.subcommand.field]] id = "proxy" label = "Proxy address" type = "string" option = ["--proxy"] sources = ["fig"] [[commands.subcommand.task]] id = "ls" label = "List nodes" fields = ["format"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["format", "quiet", "proxy"] [[commands.subcommand]] path = ["ssh"] label = "SSH to a node" description = "Run a shell on a node through Teleport. Port forwarding options are left out." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/tsh.ts" license = "MIT" [[commands.subcommand.field]] id = "target" label = "user@hostname" type = "string" position = 0 sources = ["fig"] [[commands.subcommand.field]] id = "login" label = "Login name" type = "string" option = ["-l"] sources = ["fig"] [[commands.subcommand.field]] id = "port" label = "Port" type = "integer" option = ["-p"] sources = ["fig"] [[commands.subcommand.field]] id = "agent" label = "Forward auth agent" type = "boolean" option = ["-A"] sources = ["fig"] [[commands.subcommand.field]] id = "identity" label = "Identity file" type = "path" option = ["-i"] path = { kind = "file", role = "input", must_exist = true } sources = ["fig"] [[commands.subcommand.field]] id = "no_tty" label = "Disable pseudo-tty" type = "boolean" option = ["-T"] sources = ["fig"] [[commands.subcommand.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["-q"] sources = ["fig"] [[commands.subcommand.task]] id = "ssh" label = "Connect" fields = ["target"] required = ["target"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["target", "login", "port", "agent", "identity", "no_tty", "quiet"]