如何在golang上创建sftp客户端over ssh连接

问题描述:

guys!我需要帮助。我试图通过几分钟前制作的现有ssh客户端创建一个新的sftp连接。我不能。并且idk为什么。如何在golang上创建sftp客户端over ssh连接

这里是一个代码馅饼:

config := &ssh.ClientConfig{ 
     User: *loginArg, 
     Auth: []ssh.AuthMethod{ 
      ssh.Password(*passArg), 
     }, 
     HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error { 
      return nil 
     }, 
    } 

    addr := fmt.Sprintf("%s:%d", *ipArg, *portArg) 
    client, err := ssh.Dial("tcp", addr, config) 
    if err != nil { 
     fmt.Printf("Failed to dial: %s", err) 
    } 
    fmt.Println("Successfully connected to ", *ipArg, ":", *portArg) 

    session, err := client.NewSession() 
    if err != nil { 
     fmt.Printf("Failed to create a new session: %s", err) 
    } 
    defer session.Close() 

    b, err := session.CombinedOutput("/system backup save name=BackUp dont-encrypt=yes") // /system backup save name=BackUp dont-encrypt=yes 
    if err != nil { 
     fmt.Printf("Failed to send output command: %s", err) 
    } 
    fmt.Print(string(b)) 

    //******************* 
    var conn *ssh.Client 
    sftp, err := sftp.NewClient(conn) 
    //sftp, err := sftp.NewClient(conn) //err 
    if err != nil { 
     log.Fatal(err) //fmt.Printf("Failed to create new sftp-client: %s", err) 
    } 
    defer sftp.Close() 
+1

你会得到什么输出/错误?你在期待什么?你有什么尝试? – Knetic

找到了答案:刚需客户,而不是CONN:

客户端,ERR:= ssh.Dial( “TCP”,地址,配置)

sftp,err:= sftp.NewClient(客户端)