diff --git a/test/e2e_node/remote/ssh.go b/test/e2e_node/remote/ssh.go index eefa1000924..bd1682d8243 100644 --- a/test/e2e_node/remote/ssh.go +++ b/test/e2e_node/remote/ssh.go @@ -103,9 +103,12 @@ func SSHNoSudo(host string, cmd ...string) (string, error) { // runSSHCommand executes the ssh or scp command, adding the flag provided --ssh-options func runSSHCommand(cmd string, args ...string) (string, error) { - if *sshKey != "" { - args = append([]string{"-i", *sshKey}, args...) - } else if key, found := sshDefaultKeyMap[*sshEnv]; found { + if key, err := getPrivateSSHKey(); len(key) != 0 { + if err != nil { + klog.Errorf("private SSH key (%s) not found. Check if the SSH key is configured properly:, err: %v", key, err) + return "", fmt.Errorf("private SSH key (%s) does not exist", key) + } + args = append([]string{"-i", key}, args...) } if env, found := sshOptionsMap[*sshEnv]; found { @@ -122,3 +125,24 @@ func runSSHCommand(cmd string, args ...string) (string, error) { } return string(output), nil } + +// getPrivateSSHKey returns the path to ssh private key +func getPrivateSSHKey() (string, error) { + if *sshKey != "" { + if _, err := os.Stat(*sshKey); err != nil { + return *sshKey, err + } + + return *sshKey, nil + } + + if key, found := sshDefaultKeyMap[*sshEnv]; found { + if _, err := os.Stat(key); err != nil { + return key, err + } + + return key, nil + } + + return "", nil +}