多年来,我们一直投入大量的个人时间和精力,与大家分享我们的知识。然而,我们现在需要你的帮助来维持这个博客的运行。你所要做的就是点击网站上的一个广告,否则它将由于托管等费用而不幸被关闭。谢谢你。
在这个例子中,我们将使用一个SFTP客户端和服务器,通过SSH连接上传/下载文件。对于服务器的模拟,我们将创建一个Docker容器,提供与服务器交互的基本功能。
**重要提示:**在这个版本中,文件是以小块形式读入内存的,因此更倾向于下一个版本,因为它的内存效率高。
结构
├── docker
文件
docker-compose.yaml
私钥认证需要复制SSH密钥。根据你的SSH设置,在运行docker命令之前使用$ cp ~/.ssh/[id_rsa|id_ed25519] ssh/ 命令。我有id_rsa 文件,因此使用它的原因。
version: "3.4"
sftp.go
在幕后,它与远程服务器建立了一个新的SSH连接,为SFTP客户端提供动力。由于缺乏内置的 "keepalive "和自动重新连接选项,每次调用Upload,Download 和Info 函数时,只有当它被关闭时才会打开一个新的SSH连接。它目前利用 "密码 "和 "私钥 "认证方法,这些方法是通过Config 类型配置的。如果同时启用这两种方法,则以私钥认证为优先。
这个包需要两个特别的优化。例如,Upload 和Download 可以接受/返回 io 接口或字节流。
package sftp
main.go
package main
测试
Docker
$ docker-compose up
运行
$ go run -race main.go
// When using private key auth