mirror of
https://github.com/containers/podman.git
synced 2025-08-01 07:40:22 +08:00
Add username flag for machine ssh
allow users to specify what username to use when ssh-ing into the vm. If the username flag is set, the username will be the flag value. If the flag is not set and the the vm name is specified, the default user of the vm will be used. if the flag is not set, and the vm name is not specified, then the username of the default connection will be used. Signed-off-by: Ashley Cui <acui@redhat.com>
This commit is contained in:
@ -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 {
|
||||
|
@ -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:
|
||||
|
Reference in New Issue
Block a user