ssh kitten: Allow configuring the ssh kitten to skip some hosts via a new `delegate` config directive

This commit is contained in:
Kovid Goyal
2023-06-24 09:27:53 +05:30
parent 707cefd78a
commit 99012d2659
3 changed files with 17 additions and 0 deletions

View File

@@ -71,6 +71,8 @@ Detailed list of changes
- ssh kitten: Fix a regression in 0.28.0 that caused interrupt during setup to not be handled gracefully (:iss:`6254`) - ssh kitten: Fix a regression in 0.28.0 that caused interrupt during setup to not be handled gracefully (:iss:`6254`)
- ssh kitten: Allow configuring the ssh kitten to skip some hosts via a new ``delegate`` config directive
- Graphics: Move images up along with text when the window is shrunk vertically (:iss:`6278`) - Graphics: Move images up along with text when the window is shrunk vertically (:iss:`6278`)
- Fix a regression in 0.28.0 that caused a buffer overflow when clearing the screen (:iss:`6306`, :pull:`6308`) - Fix a regression in 0.28.0 that caused a buffer overflow when clearing the screen (:iss:`6306`, :pull:`6308`)

View File

@@ -32,6 +32,7 @@ import (
"kitty/tools/tui/loop" "kitty/tools/tui/loop"
"kitty/tools/utils" "kitty/tools/utils"
"kitty/tools/utils/secrets" "kitty/tools/utils/secrets"
"kitty/tools/utils/shlex"
"kitty/tools/utils/shm" "kitty/tools/utils/shm"
"golang.org/x/exp/maps" "golang.org/x/exp/maps"
@@ -613,6 +614,13 @@ func run_ssh(ssh_args, server_args, found_extra_args []string) (rc int, err erro
fmt.Fprintf(os.Stderr, "Ignoring bad config line: %s:%d with error: %s", filepath.Base(x.Src_file), x.Line_number, x.Err) fmt.Fprintf(os.Stderr, "Ignoring bad config line: %s:%d with error: %s", filepath.Base(x.Src_file), x.Line_number, x.Err)
} }
} }
if host_opts.Delegate != "" {
delegate_cmd, err := shlex.Split(host_opts.Delegate)
if err != nil {
return 1, fmt.Errorf("Could not parse delegate command: %#v with error: %w", host_opts.Delegate, err)
}
return 1, unix.Exec(utils.FindExe(delegate_cmd[0]), utils.Concat(delegate_cmd, ssh_args, server_args), os.Environ())
}
if host_opts.Share_connections { if host_opts.Share_connections {
kpid, err := strconv.Atoi(os.Getenv("KITTY_PID")) kpid, err := strconv.Atoi(os.Getenv("KITTY_PID"))
if err != nil { if err != nil {

View File

@@ -201,6 +201,13 @@ terminal before the connection is established, so the kitten cannot use the
terminal to send data without an extra roundtrip, adding to initial connection terminal to send data without an extra roundtrip, adding to initial connection
latency. latency.
''') ''')
opt('delegate', '', long_text='''
Do not use the SSH kitten for this host. Instead run the command specified as the delegate.
For example using :code:`delegate ssh` will run the ssh command with all arguments passed
to the kitten, except kitten specific ones. This is useful if some hosts are not capable
of supporting the ssh kitten.
''')
egr() # }}} egr() # }}}