diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-09-13 14:34:29 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-13 14:34:29 -0400 |
commit | f07a2bfbec03bc9c86414e697ac797ce04807da1 (patch) | |
tree | 708b80eafb589802c2261aea1c603bdabc24e8f8 /cmd/podman/machine | |
parent | 8fa3e6c58e4afffea7abf7e1f179e08b19db46a9 (diff) | |
parent | 7a667c4ac301c374eaf058b1924c4dbf6a9bbd7a (diff) | |
download | podman-f07a2bfbec03bc9c86414e697ac797ce04807da1.tar.gz podman-f07a2bfbec03bc9c86414e697ac797ce04807da1.tar.bz2 podman-f07a2bfbec03bc9c86414e697ac797ce04807da1.zip |
Merge pull request #11440 from ashley-cui/ssh
Use default username for podman machine ssh
Diffstat (limited to 'cmd/podman/machine')
-rw-r--r-- | cmd/podman/machine/ssh.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/cmd/podman/machine/ssh.go b/cmd/podman/machine/ssh.go index 85101a641..84e9e88ab 100644 --- a/cmd/podman/machine/ssh.go +++ b/cmd/podman/machine/ssh.go @@ -3,6 +3,9 @@ package machine import ( + "net/url" + + "github.com/containers/common/pkg/config" "github.com/containers/podman/v3/cmd/podman/registry" "github.com/containers/podman/v3/pkg/machine" "github.com/containers/podman/v3/pkg/machine/qemu" @@ -44,6 +47,14 @@ 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]. @@ -57,16 +68,25 @@ 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]) } } } + // If len is greater than 1, it means we might have been // given a vmname and args or just args if len(args) > 1 { if validVM { sshOpts.Args = args[1:] } else { + sshOpts.Username, err = remoteConnectionUsername() + if err != nil { + return err + } sshOpts.Args = args } } @@ -80,3 +100,20 @@ func ssh(cmd *cobra.Command, args []string) error { } return vm.SSH(vmName, sshOpts) } + +func remoteConnectionUsername() (string, error) { + cfg, err := config.ReadCustomConfig() + if err != nil { + return "", err + } + dest, _, err := cfg.ActiveDestination() + if err != nil { + return "", err + } + uri, err := url.Parse(dest) + if err != nil { + return "", err + } + username := uri.User.String() + return username, nil +} |