美文网首页
go实现ssh远程执行命令

go实现ssh远程执行命令

作者: 明明就_c565 | 来源:发表于2021-04-07 20:55 被阅读0次

    package main

    import (

        "fmt"

        "golang.org/x/crypto/ssh"

        "log"

        "time"

    )

    func main(){

        sshHost := "192.168.6.126"

        sshUser := "root"

        sshPassword := "123456"

        sshType := "password"

        sshPort := 22

        //创建sshp登陆配置

        config := &ssh.ClientConfig{

            Timeout:         5*time.Second,//ssh 连接time out 时间一秒钟, 如果ssh验证错误 会在一秒内返回

            User:            sshUser,

            HostKeyCallback: ssh.InsecureIgnoreHostKey(), //这个可以, 但是不够安全

            //HostKeyCallback: hostKeyCallBackFunc(h.Host),

        }

        if sshType == "password" {

            config.Auth = []ssh.AuthMethod{ssh.Password(sshPassword)}

        }

        //dial 获取ssh client

        addr := fmt.Sprintf("%s:%d", sshHost, sshPort)

        sshClient, err := ssh.Dial("tcp", addr, config)

        if err != nil {

            log.Fatal("创建ssh client 失败",err)

        }

        defer sshClient.Close()

        //创建ssh-session

        session, err := sshClient.NewSession()

        if err != nil {

            log.Fatal("创建ssh session 失败",err)

        }

        defer session.Close()

        //执行远程命令

        combo,err := session.CombinedOutput("whoami; cd /root/; ls -al;echo Hello > hello.txt;echo hello;curl http://baidu.com")

        if err != nil {

            log.Fatal("远程执行cmd 失败",err)

        }

        log.Println("命令输出:",string(combo))

    }

    源码来自:https://www.cnblogs.com/you-men/p/14163364.html

    相关文章

      网友评论

          本文标题:go实现ssh远程执行命令

          本文链接:https://www.haomeiwen.com/subject/uufpkltx.html