多年来,我们一直投入大量的个人时间和精力,与大家分享我们的知识。然而,我们现在需要你的帮助来维持这个博客的运行。你所要做的只是点击网站上的一个广告,否则它将由于托管等费用而不幸被关闭。谢谢你。
在这个例子中,我们将使用一个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 类型配置的。如果同时启用这两种方法,则以私钥认证为准。
package sftp
main.go
package main
测试
Docker
$ docker-compose up
运行
$ go run -race main.go
// When using private key auth