golang 通過ssh連接遠程服務器 控制"/>
golang 通過ssh連接遠程服務器 控制
1.下載依賴
go get golang/x/crypto/ssh
2.import
import ("fmt""log""time""golang/x/crypto/ssh"
)
3.使用
func pwdConnect(sshHost, sshUser, sshPassword string, sshPort int) (*ssh.Client, error) {// 创建ssh登录配置config := &ssh.ClientConfig{Timeout: 5 * time.Second, // 超时时间User: sshUser, // 登录账号Auth: []ssh.AuthMethod{ssh.Password(sshPassword)}, // 密码HostKeyCallback: ssh.InsecureIgnoreHostKey(), // 这个不够安全,生产环境不建议使用//HostKeyCallback: ssh.FixedHostKey(), // 建议使用这种,目前还没研究出怎么使用[todo]}// dial连接服务器addr := fmt.Sprintf("%s:%d", sshHost, sshPort)Client, err := ssh.Dial("tcp", addr, config)if err != nil {log.Fatal("连接到服务器失败", err)return nil, err}//defer sshClient.Close()return Client, nil
}func main() {// 连接到服务器conn, err := pwdConnect("10.xxxx","root","1234",22)if err != nil {return}defer conn.Close()// 创建 ssh session 会话session, err := conn.NewSession()if err != nil {panic(err)}defer session.Close()// 执行远程命令cmd := "cd /home ; ls"cmdInfo, err := session.CombinedOutput(cmd)if err != nil {panic(err)}fmt.Println(string(cmdInfo))
}
更多推荐
golang 通過ssh連接遠程服務器 控制
发布评论