diff --git a/cmd/climc/shell/compute/server_forward.go b/cmd/climc/shell/compute/server_forward.go index 0576ba5b20..4c8d0ed225 100644 --- a/cmd/climc/shell/compute/server_forward.go +++ b/cmd/climc/shell/compute/server_forward.go @@ -39,7 +39,7 @@ type forwardInfo struct { func dump(input jsonutils.JSONObject) (*forwardInfo, error) { ret := new(forwardInfo) if err := input.Unmarshal(ret); err != nil { - return nil, errors.Wrap(err, "xxxx") + return nil, errors.Wrap(err, "JSONObject unmarshal failed") } if ret.ProxyAddr == "" { diff --git a/cmd/climc/shell/compute/servers.go b/cmd/climc/shell/compute/servers.go index 328b2764bf..c862af7690 100644 --- a/cmd/climc/shell/compute/servers.go +++ b/cmd/climc/shell/compute/servers.go @@ -844,12 +844,23 @@ func init() { port = opts.Port } - sshCli, err := ssh.NewClient(host, port, user, passwd, "") + vpcid, err := srv.GetString("vpc_id") + if err != nil { + return err + } forwardFlag := false - var forwardItem *forwardInfo + var ( + forwardItem *forwardInfo + sshCli *ssh.Client + ) - if err != nil { + if vpcid == "default" { + sshCli, err = ssh.NewClient(host, port, user, passwd, "") + if err != nil { + return err + } + } else { forwardFlag = true forwardItem, err = openForward(s, srvid) if err != nil { @@ -861,8 +872,8 @@ func init() { closeForward(s, srvid, forwardItem) return err } - } + log.Infof("ssh %s:%d", host, port) if err := sshCli.RunTerminal(); err != nil { if forwardFlag { @@ -870,6 +881,7 @@ func init() { } return err } + if forwardFlag { closeForward(s, srvid, forwardItem) }