summaryrefslogtreecommitdiff
path: root/cmd/podman/machine/ssh.go
diff options
context:
space:
mode:
authorAshley Cui <acui@redhat.com>2021-09-03 14:15:32 -0400
committerAshley Cui <acui@redhat.com>2021-09-03 16:40:13 -0400
commit7a667c4ac301c374eaf058b1924c4dbf6a9bbd7a (patch)
treebd9efcce7134b7cb4a71807c224791634b93af9c /cmd/podman/machine/ssh.go
parent5c3369951573d2079eca0be7fdc40a96933ab977 (diff)
downloadpodman-7a667c4ac301c374eaf058b1924c4dbf6a9bbd7a.tar.gz
podman-7a667c4ac301c374eaf058b1924c4dbf6a9bbd7a.tar.bz2
podman-7a667c4ac301c374eaf058b1924c4dbf6a9bbd7a.zip
Use default username for podman machine ssh
When using the defaut conection for podman machine ssh, use the default username too. Signed-off-by: Ashley Cui <acui@redhat.com>
Diffstat (limited to 'cmd/podman/machine/ssh.go')
-rw-r--r--cmd/podman/machine/ssh.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/cmd/podman/machine/ssh.go b/cmd/podman/machine/ssh.go
index b52a48faf..f185948f5 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
+}