2017-07-14 262 views
0

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

回答

0

找到了答案:剛需客戶,而不是CONN:

客戶端,ERR:= ssh.Dial( 「TCP」,地址,配置)

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