golang通过ssh实现远程文件传输

Posted -xuzhankun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang通过ssh实现远程文件传输相关的知识,希望对你有一定的参考价值。

使用ssh远程操作文件, 主要是创建ssh, 直接上代码


import (
"fmt"
"github.com/pkg/sftp"
"golang.org/x/crypto/ssh"
"net"
"strconv"
"time"
)

func SftpConnect(user, password, host string, port int) (sftpClient *sftp.Client, err error) //参数: 远程服务器用户名, 密码, ip, 端口
auth := make([]ssh.AuthMethod, 0)
auth = append(auth, ssh.Password(password))

clientConfig := &ssh.ClientConfig
User: user,
Auth: auth,
Timeout: 30 * time.Second,
HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error
return nil
,


addr := host + ":" + strconv.Itoa(port)
sshClient, err := ssh.Dial("tcp", addr, clientConfig) //连接ssh
if err != nil
fmt.Println("连接ssh失败", err)
return


if sftpClient, err = sftp.NewClient(sshClient); err != nil //创建客户端
fmt.Println("创建客户端失败", err)
return


return


使用也很简单

技术图片

sftpClient.Open() 返回的是*sftp.File, 操作和官方库差不多

以上是关于golang通过ssh实现远程文件传输的主要内容,如果未能解决你的问题,请参考以下文章

通过 SSH 在远程和本地系统之间传输文件的 4 种方法

通过 SSH 在远程和本地系统之间传输文件的 4 种方法

Linux下利用ssh远程文件传输 传输命令 scp

通过 SSH 传输文件 [关闭]

Golang实践录:ssh及scp实现的优化

Golang实践录:ssh及scp实现的优化