如何在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()
答
找到了答案:刚需客户,而不是CONN:
客户端,ERR:= ssh.Dial( “TCP”,地址,配置)
sftp,err:= sftp.NewClient(客户端)
你会得到什么输出/错误?你在期待什么?你有什么尝试? – Knetic