Skip to content

Commit

Permalink
Merge pull request #152 from srm09/bug/prompt-for-host-key-check
Browse files Browse the repository at this point in the history
Changes ssh command string for proxy args
  • Loading branch information
vladimirvivien authored Aug 19, 2020
2 parents 0422026 + 985a657 commit ca2aa2c
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 8 deletions.
24 changes: 17 additions & 7 deletions ssh/ssh.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,15 +121,25 @@ func makeSSHCmdStr(progName string, args SSHArgs) (string, error) {

proxyJump := func() string {
if args.ProxyJump != nil {
return fmt.Sprintf("-J %s@%s", args.ProxyJump.User, args.ProxyJump.Host)
return fmt.Sprintf("%s@%s", args.User, args.Host) + ` -o "ProxyCommand ssh -o StrictHostKeyChecking=no -W %h:%p ` + fmt.Sprintf("%s %s@%s\"", pkPath(), args.ProxyJump.User, args.ProxyJump.Host)
}
return ""
}

// build command as
// ssh -i <pkpath> -P <port> -J <proxyjump> user@host
cmd := fmt.Sprintf(
`%s %s %s %s %s@%s`,
sshCmdPrefix(), pkPath(), port(), proxyJump(), args.User, args.Host,
)
return cmd, nil
// ssh -i <pkpath> -P <port> user@host OR
// ssh -i <pkpath> -P <port> user@host -o "ProxyCommand ssh -W %h:%p -i <pkpath> <proxyJump>"
cmd := func() string {
cmdStr := fmt.Sprintf("%s %s %s ", sshCmdPrefix(), pkPath(), port())

if proxyDetails := proxyJump(); proxyDetails != "" {
cmdStr += proxyDetails
} else {
cmdStr += fmt.Sprintf("%s@%s", args.User, args.Host)
}

return cmdStr
}

return cmd(), nil
}
7 changes: 6 additions & 1 deletion ssh/ssh_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,12 @@ func TestSSHRunMakeCmdStr(t *testing.T) {
{
name: "user host pkpath and proxy",
args: SSHArgs{User: "sshuser", Host: "local.host", PrivateKeyPath: "/pk/path", ProxyJump: &ProxyJumpArgs{User: "juser", Host: "jhost"}},
cmdStr: "ssh -q -o StrictHostKeyChecking=no -i /pk/path -p 22 -J juser@jhost [email protected]",
cmdStr: "ssh -q -o StrictHostKeyChecking=no -i /pk/path -p 22 [email protected] -o \"ProxyCommand ssh -o StrictHostKeyChecking=no -W %h:%p -i /pk/path juser@jhost\"",
},
{
name: "user host and proxy",
args: SSHArgs{User: "sshuser", Host: "local.host", ProxyJump: &ProxyJumpArgs{User: "juser", Host: "jhost"}},
cmdStr: "ssh -q -o StrictHostKeyChecking=no -p 22 [email protected] -o \"ProxyCommand ssh -o StrictHostKeyChecking=no -W %h:%p juser@jhost\"",
},
{
name: "missing host",
Expand Down

0 comments on commit ca2aa2c

Please sign in to comment.