package sshx import ( "go_mysqldump/global" "log" "golang.org/x/crypto/ssh" ) type SshxClient struct { *ssh.Client } type SshxSession struct { *ssh.Session } // 用完需要Close type Config struct { Host string `json:"host" yaml:"host"` User string `json:"user" yaml:"user"` PassWord string `json:"password" yaml:"password"` Port int `json:"port" yaml:"port"` } func NewClient(conf Config) (*SshxClient, error) { config := &ssh.ClientConfig{ User: conf.User, Auth: []ssh.AuthMethod{ ssh.Password(conf.Password), }, HostKeyCallback: ssh.InsecureIgnoreHostKey(), } client, err := ssh.Dial("tcp", conf.Host+":"+conf.Port, config) if err != nil { log.Fatal("ssh Failed to dail:", err) } // defer client.Close() s := SshxClient{client} return &s, err } // 获取Session func (cc *SshxClient) NewSession() (*SshxSession, error) { session, err := cc.NewSession() if err != nil { log.Fatal("Fail to dial:", err) } // defer session.Close() s := SshxSession{session} return &s, err }