Add support for RemoteCommand option in kitten ssh

This commit is contained in:
zhaolei
2026-04-14 11:11:51 +08:00
parent c60ed85cdd
commit 9b02a59c4e
4 changed files with 73 additions and 4 deletions

View File

@@ -3,6 +3,7 @@
package ssh
import (
"bufio"
"bytes"
"fmt"
"os/exec"
@@ -194,6 +195,40 @@ func ParseSSHArgs(args []string, extra_args ...string) (ssh_args []string, serve
return
}
type SSHConfig struct {
RemoteCommand string
}
func LoadSSHConfig(hostname string) (config *SSHConfig, err error) {
cmd_args := []string{SSHExe(), hostname, "-G"}
cmd := exec.Command(cmd_args[0], cmd_args[1:]...)
var stdout, stderr bytes.Buffer
cmd.Stdout = &stdout
cmd.Stderr = &stderr
_ = cmd.Run()
text := stdout.String()
scanner := bufio.NewScanner(strings.NewReader(text))
config = &SSHConfig{}
for scanner.Scan() {
line := scanner.Text()
i := strings.IndexByte(line, ' ')
if i <= 0 {
continue
}
key, val := line[:i], line[i+1:]
switch key {
case "remotecommand":
if val != "none" {
config.RemoteCommand = val
}
}
}
return config, nil
}
type SSHVersion struct{ Major, Minor int }
func (self SSHVersion) SupportsAskpassRequire() bool {