id = "trzsz-ssh"
name = "trzsz-ssh"
homepage = "https://github.com/trzsz/trzsz-ssh"
description = "A terminal SSH client with trzsz and zmodem file-transfer support."
executables = ["tssh"]
[dotfiles]
paths = ["[configHome]/tssh/tssh.conf", "~/.tssh.conf"]
secret = ["~/.ssh/password"]
[commands]
format = 1
label = "Connect with tssh"
description = "Log in to a host with tssh, an ssh-compatible client with trzsz file transfer and optional UDP mode. Tools such as --new-host, --enc-secret and the --install-* options are not covered."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
url = "https://github.com/trzsz/trzsz-ssh/blob/main/tssh/args.go"
revision = "v0.1.27"
evidence = """
Destination string `arg:"positional" help:"alias in ~/.ssh/config, or [user@]hostname[:port]"`
Command string `arg:"positional" help:"command to execute instead of a login shell"`
ForwardAgent bool `arg:"-A,--" help:"enable forwarding the ssh agent connection"`
DisableTTY bool `arg:"-T,--" help:"disable pseudo-terminal allocation"`
ForceTTY bool `arg:"-t,--" help:"force pseudo-terminal allocation"`
NoCommand bool `arg:"-N,--" help:"do not execute a remote command"`
Port int `arg:"-p,--" placeholder:"port" help:"port to connect to on the remote host"`
LoginName string `arg:"-l,--" placeholder:"login_name" help:"the user to log in as on the remote machine"`
Identity multiStr `arg:"-i,--" placeholder:"identity_file" help:"identity (private key) for public key auth"`
ConfigFile string `arg:"-F,--" placeholder:"configfile" help:"an alternative per-user configuration file"`
ProxyJump string `arg:"-J,--" placeholder:"destination" help:"jump hosts separated by comma characters"`
DynamicForward bindArgs `arg:"-D,--" placeholder:"[bind_addr:]port" help:"dynamic port forwarding ( socks5 proxy )"`
LocalForward forwardArgs `arg:"-L,--" placeholder:"[bind_addr:]port:host:hostport" help:"local port forwarding"`
RemoteForward forwardArgs `arg:"-R,--" placeholder:"[bind_addr:]port:host:hostport" help:"remote port forwarding"`
DragFile bool `arg:"--dragfile" help:"enable drag files and directories to upload"`
Debug bool `arg:"--debug" help:"verbose mode for debugging, same as ssh's -vvv"`
Zmodem bool `arg:"--zmodem" help:"enable zmodem lrzsz ( rz / sz ) feature"`
TCP bool `arg:"--tcp" help:"force standard TCP SSH (overrides UdpMode)"`
UDP bool `arg:"--udp" help:"ssh over UDP like mosh (default: QUIC)"`
KCP bool `arg:"--kcp" help:"[udp] use KCP protocol for ssh over UDP"`
QUIC bool `arg:"--quic" help:"[udp] use QUIC protocol for ssh over UDP"`
"""
[[commands.field]]
id = "destination"
label = "Host"
description = "An alias from ~/.ssh/config, or [user@]hostname[:port]."
type = "string"
position = 0
min = 1
sources = ["help"]
[[commands.field]]
id = "command"
label = "Remote command"
description = "Run this instead of a login shell."
type = "string"
position = 1
effect = "exec"
sources = ["help"]
[[commands.field]]
id = "port"
label = "Port"
type = "integer"
option = ["-p"]
sources = ["help"]
[[commands.field]]
id = "login_name"
label = "Login user"
type = "string"
option = ["-l"]
sources = ["help"]
[[commands.field]]
id = "identity"
label = "Identity file"
type = "path"
option = ["-i"]
multiple = true
path = { kind = "file", role = "input", must_exist = true }
sources = ["help"]
[[commands.field]]
id = "config_file"
label = "SSH config file"
type = "path"
option = ["-F"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["help"]
[[commands.field]]
id = "proxy_jump"
label = "Jump hosts"
description = "Comma-separated jump hosts."
type = "string"
option = ["-J"]
sources = ["help"]
[[commands.field]]
id = "local_forward"
label = "Local forward"
description = "[bind_addr:]port:host:hostport."
type = "string"
option = ["-L"]
multiple = true
sources = ["help"]
[[commands.field]]
id = "remote_forward"
label = "Remote forward"
description = "[bind_addr:]port:host:hostport."
type = "string"
option = ["-R"]
multiple = true
sources = ["help"]
[[commands.field]]
id = "dynamic_forward"
label = "SOCKS proxy"
description = "[bind_addr:]port for dynamic port forwarding."
type = "string"
option = ["-D"]
sources = ["help"]
[[commands.field]]
id = "force_tty"
label = "Force terminal allocation"
type = "boolean"
option = ["-t"]
sources = ["help"]
[[commands.field]]
id = "no_command"
label = "No remote command"
description = "Useful together with port forwarding."
type = "boolean"
option = ["-N"]
sources = ["help"]
[[commands.field]]
id = "forward_agent"
label = "Forward SSH agent"
type = "boolean"
option = ["-A"]
sources = ["help"]
[[commands.field]]
id = "dragfile"
label = "Drag files to upload"
type = "boolean"
option = ["--dragfile"]
sources = ["help"]
[[commands.field]]
id = "zmodem"
label = "Enable zmodem (rz / sz)"
type = "boolean"
option = ["--zmodem"]
sources = ["help"]
[[commands.field]]
id = "udp"
label = "SSH over UDP"
description = "Needs tsshd on the server. QUIC by default."
type = "boolean"
option = ["--udp"]
sources = ["help"]
[[commands.field]]
id = "kcp"
label = "Use KCP (with UDP)"
type = "boolean"
option = ["--kcp"]
sources = ["help"]
[[commands.field]]
id = "debug"
label = "Debug output"
type = "boolean"
option = ["--debug"]
sources = ["help"]
[[commands.task]]
id = "login"
label = "Log in"
fields = ["destination"]
required = ["destination"]
[[commands.task]]
id = "login_udp"
label = "Log in over UDP"
fields = ["destination", "udp"]
required = ["destination"]
set = { udp = [true] }
[[commands.task]]
id = "tunnel"
label = "Local port forward"
fields = ["destination", "local_forward", "no_command"]
required = ["destination", "local_forward"]
set = { no_command = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["destination", "command", "port", "login_name", "identity", "proxy_jump"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["config_file", "local_forward", "remote_forward", "dynamic_forward", "force_tty", "no_command", "forward_agent", "dragfile", "zmodem", "udp", "kcp", "debug"]