@@ -630,14 +630,17 @@ func run_ssh(ssh_args, server_args, found_extra_args []string, ssh_config_channe
630630 _ = data_shm .Unlink ()
631631 }
632632 }()
633- cmd := append ([]string {SSHExe ()}, ssh_args ... )
633+ // In ssh CLI parsing first -o wins
634+ cmd := []string {SSHExe (), "-o" , "RemoteCommand=none" }
635+ cmd = append (cmd , ssh_args ... )
634636 cd := connection_data {remote_args : server_args [1 :]}
635637 hostname := server_args [0 ]
636638 if len (cd .remote_args ) == 0 {
637639 cmd = append (cmd , "-t" )
638640 }
639641 insertion_point := len (cmd )
640642 cmd = append (cmd , "--" , hostname )
643+ cmd = slices .Insert (cmd , insertion_point , "-o" , "RemoteCommand=none" )
641644 uname , hostname_for_match := get_destination (hostname )
642645 overrides , literal_env , err := parse_kitten_args (found_extra_args , uname , hostname_for_match )
643646 if err != nil {
@@ -779,11 +782,7 @@ func run_ssh(ssh_args, server_args, found_extra_args []string, ssh_config_channe
779782 }
780783 defer cleanup ()
781784 // Receive ssh config
782- ssh_config := <- ssh_config_channel
783- if ssh_config != nil && ssh_config .RemoteCommand != "" {
784- cmd = slices .Insert (cmd , insertion_point , "-o" , "RemoteCommand=none" )
785- }
786- cd .ssh_config = ssh_config
785+ cd .ssh_config = <- ssh_config_channel
787786 err = get_remote_command (& cd )
788787 if err != nil {
789788 return 1 , err
@@ -820,8 +819,7 @@ func run_ssh(ssh_args, server_args, found_extra_args []string, ssh_config_channe
820819 err = c .Wait ()
821820 drain_potential_tty_garbage (term )
822821 if err != nil {
823- var exit_err * exec.ExitError
824- if errors .As (err , & exit_err ) {
822+ if exit_err , ok := errors.AsType [* exec.ExitError ](err ); ok {
825823 if state := exit_err .ProcessState .String (); state == "signal: interrupt" {
826824 cleanup ()
827825 _ = unix .Kill (os .Getpid (), unix .SIGINT )
@@ -863,7 +861,7 @@ func main(cmd *cli.Command, o *Options, args []string) (rc int, err error) {
863861
864862 ctx , cancel := context .WithCancel (context .Background ())
865863 defer cancel ()
866- ssh_config_channel := ReadSSHConfig (ctx , server_args [0 ])
864+ ssh_config_channel := ReadSSHConfig (ctx , ssh_args , server_args [0 ])
867865
868866 if os .Getenv ("KITTY_WINDOW_ID" ) == "" || os .Getenv ("KITTY_PID" ) == "" {
869867 return 1 , fmt .Errorf ("The SSH kitten is meant to run inside a kitty window" )
0 commit comments