Merge pull request #11617 from ashley-cui/ssh

[NO TESTS NEEDED] Add username flag for machine ssh
This commit is contained in:
OpenShift Merge Robot
2021-09-18 06:43:03 -04:00
committed by GitHub
2 changed files with 18 additions and 17 deletions

View File

@ -5,6 +5,7 @@ package machine
import (
"net/url"
"github.com/containers/common/pkg/completion"
"github.com/containers/common/pkg/config"
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/pkg/machine"
@ -15,7 +16,7 @@ import (
var (
sshCmd = &cobra.Command{
Use: "ssh [NAME] [COMMAND [ARG ...]]",
Use: "ssh [options] [NAME] [COMMAND [ARG ...]]",
Short: "SSH into an existing machine",
Long: "SSH into a managed virtual machine ",
RunE: ssh,
@ -35,6 +36,10 @@ func init() {
Command: sshCmd,
Parent: machineCmd,
})
flags := sshCmd.Flags()
usernameFlagName := "username"
flags.StringVar(&sshOpts.Username, usernameFlagName, "", "Username to use when ssh-ing into the VM.")
_ = sshCmd.RegisterFlagCompletionFunc(usernameFlagName, completion.AutocompleteNone)
}
func ssh(cmd *cobra.Command, args []string) error {
@ -48,13 +53,6 @@ func ssh(cmd *cobra.Command, args []string) error {
// Set the VM to default
vmName := defaultMachineName
// If we're not given a VM name, use the remote username from the connection config
if len(args) == 0 {
sshOpts.Username, err = remoteConnectionUsername()
if err != nil {
return err
}
}
// If len is greater than 0, it means we may have been
// provided the VM name. If so, we check. The VM name,
// if provided, must be in args[0].
@ -68,10 +66,6 @@ func ssh(cmd *cobra.Command, args []string) error {
if validVM {
vmName = args[0]
} else {
sshOpts.Username, err = remoteConnectionUsername()
if err != nil {
return err
}
sshOpts.Args = append(sshOpts.Args, args[0])
}
}
@ -83,12 +77,15 @@ func ssh(cmd *cobra.Command, args []string) error {
if validVM {
sshOpts.Args = args[1:]
} else {
sshOpts.Args = args
}
}
if !validVM && sshOpts.Username == "" {
sshOpts.Username, err = remoteConnectionUsername()
if err != nil {
return err
}
sshOpts.Args = args
}
}
switch vmType {

View File

@ -4,7 +4,7 @@
podman\-machine\-ssh - SSH into a virtual machine
## SYNOPSIS
**podman machine ssh** [*name*] [*command* [*arg* ...]]
**podman machine ssh** [*options*] [*name*] [*command* [*arg* ...]]
## DESCRIPTION
@ -21,6 +21,10 @@ with the virtual machine is established.
Print usage statement.
#### **--username**=*name*
Username to use when SSH-ing into the VM.
## EXAMPLES
To get an interactive session with the default virtual machine: