当前位置: 首页 > news >正文

有没有网站赤壁网站设计

有没有网站,赤壁网站设计,经营之道的优势,网页设计与制作课程相关信息前言 最近在使用 sftp 服务时#xff0c;被告知发起了海量的连接#xff0c;直接把服务器搞崩#xff0c;ip 被封了。 这是啥情况#xff1f; golang 写的代码#xff0c;我就正常的访问 sftp 服务#xff0c;连接使用过后也都关闭了#xff0c;咋会出现连接一直连着…前言 最近在使用 sftp 服务时被告知发起了海量的连接直接把服务器搞崩ip 被封了。 这是啥情况 golang 写的代码我就正常的访问 sftp 服务连接使用过后也都关闭了咋会出现连接一直连着没关的情况呢 原因分析 先上代码主要使用了开源库 github.com/pkg/sftp package mainimport (fmtgithub.com/pkg/sftpgolang.org/x/crypto/sshtime )func main() {ticker : time.NewTicker(time.Second)for range ticker.C {client, err : createDefaultSftpClient()if err ! nil {panic(err)}// 演示用wd, err : client.Getwd()if err ! nil {panic(err)}fmt.Println(wd)client.Close()} }func createSFTPClient(user, pwd, host, port string, pemBytes []byte) (*ssh.Client, *sftp.Client, error) {var authMethods []ssh.AuthMethodif pwd ! {authMethods append(authMethods, ssh.Password(pwd))}if len(pemBytes) 0 {signer, err : ssh.ParsePrivateKey(pemBytes)if err ! nil {return nil, nil, err}authMethods append(authMethods, ssh.PublicKeys(signer))}config : ssh.ClientConfig{User: user,Auth: authMethods,HostKeyCallback: ssh.InsecureIgnoreHostKey(),}conn, err : ssh.Dial(tcp, host:port, config)if err ! nil {return nil, nil, err}client, err : sftp.NewClient(conn)if err ! nil {return nil, nil, err}return conn, client, nil }var defaultSftpPemBytes []byte()func createDefaultSftpClient() (*sftp.Client, error) {_, client, err : createSFTPClient(foo, test, 127.0.0.1, 2222, defaultSftpPemBytes)return client, err }本篇的测试环境是 windows当上述程序跑起来后查看本机 2222 端口的使用情况netstat -ano | findstr 2222这一看果然是好多连接啊。为什么我的 client 已经 Close 了还是会有这么多连接未关闭呢 想必细心的朋友们已经发现了问题我故意给 createSFTPClient 返回了两个连接一个是 ssh.Client 还有一个是 sftp.Client但是 createDefaultSftpClient 只返回了 sftp.Client。 查看 github.com/pkg/sftp 源码发现 sftp.NewClient 会调用 SSH 连接的 NewSession 方法创建一个新会话但不会持有 SSH 连接的所有权。sftpClient.Close() 仅关闭 SFTP 会话的 Channel而 SSH 连接的生命周期由调用方即 sshClient控制。 原因就是 ssh.Client 创建了没有关闭必须要显示调用 sshClient.Close() 搭建测试 sftp 服务 使用 docker 镜像 atmoz/sftp 搭建 sftp 服务。 docker-compose.yaml version: 3.8services:sftp:image: atmoz/sftpvolumes:- ./atmoz_data:/home/foo/uploads# - ./atmoz_ssh_keys:/home/foo/.ssh/keys # 支持密钥登录command: foo:test:1001 # 用户名:空密码:UID:GIDports:- 2222:22这里我踩了两个坑 linux 环境下服务启动后尝试创建目录时报错 mkdir /test: permission denied。 是因为宿主机目录的权限或所有权未与容器内用户的 UID/GID 匹配。例如容器内用户 UID 为 1001但宿主机目录所有者是 root导致权限冲突。可以调整宿主机目录的权限 chown -R 1001:1001 /宿主机目录/atmoz_data。若需支持密钥登录需将上述的 docker-compose.yaml 中 volumes 的注释去掉。注意宿主机的 atmoz_ssh_keys 目录下一定要把自己生成的 ssh key 公钥放进去不然会报错。 [/usr/local/bin/create-sftp-user] Parsing user data: foo:test:1001 cat: /home/foo/.ssh/keys/*: No such file or directory因为使用 atmoz/sftp 镜像时若在 command 中定义了用户 foo:test:1001镜像会自动执行以下操作 创建用户 fooUID 1001。尝试从 /home/foo/.ssh/keys/ 目录加载公钥文件*.pub 或 authorized_keys。将公钥写入 /home/foo/.ssh/authorized_keys。 由于将容器内的 /home/foo/.ssh/keys/ 目录映射出去了但是有没放密钥文件进去找不到文件所以就直接报错了。 这里还有一点atmoz/sftp 搭建的服务应该是不支持 Ed25519 类型的密钥的可以使用 rsa。 ssh-keygen -t rsa -b 4096总结 本文主要分析了使用 go 三方库 github.com/pkg/sftp 访问 sftp 服务出现大量的连接未关闭的异常情况需要显式调用 sshClient.Close()。 接着介绍了如何使用 docker 搭建 sftp 服务一个权限一个密钥需要注意。
http://www.pierceye.com/news/600839/

相关文章:

  • 加强人社局网站建设获取小程序api
  • 服务器网站备案学生ppt模板免费下载 素材
  • 手机做网站软件运营管理培训
  • 迅博威网站建设南宁 建网站 公司
  • 河北省建设机械协会是正规网站吗网站及网页设计费用
  • 门户网站seo前期铁岭网站建设移动网站
  • 肇庆免费模板建站jsp电商网站开发流程图
  • 阿里巴巴国际站网站建设青岛网站搭建公司哪家好
  • 能看人与动物做的网站浙江企业响应式网站建设设计
  • 乌兰察布做网站公司营销策划公司有哪些职位
  • 南宁区建设银行招聘网站建设部网站申请表无法打印
  • 建一个网站怎么赚钱吗家具网站源码
  • 云优化网站建设wordpress开启icon
  • 招聘网站开发的目的与意义农特产品电商网站建设目标
  • 三水 网站建设公司企业黄页
  • 网站建设公司词辽宁阜新建设学校官方网站
  • 广州公司网站建设设计顾视频网站的建设预算
  • 商务网站规划与网页制作seo优化内容
  • 石家庄网站定做公众号开发单位
  • 做预定网站的作用网站建设需求方案文档
  • 西安网站建设高端万网总裁张向东
  • 肖鸿昌建筑网站广州网站建设设计公司信息
  • 网站建设 大公司好成都网站建设哪家售后好
  • 外贸网站模板制作微营销推广方案
  • 网站开发体系用node.js可以做网站吗
  • 一个vps建两个网站怎么弄数据库网络营销应用方式
  • 网站开发快递c 网站开发入门视频教程
  • 阿里巴巴国际站介绍深圳网站建设 猴王网络
  • 扬中网站建设哪家好五百丁简历官网
  • 素马设计顾问讲解价格短视频seo什么意思