#17513·jumpserver

[Bug] 接异常中断(关闭码 1006):未收到 Koko 结束通知,请检查网络、代理或 Koko 服务

Author: dysodengCreated Sep 17, 2026Updated Sep 17, 2026
Labels🐛 Bug🔔 Pending processing

产品版本

v5.0.0

版本类型

  • 社区版
  • 企业版
  • 企业试用版

安装方式

  • 在线安装 (一键命令安装)
  • 离线包安装
  • All-in-One
  • 1Panel
  • Kubernetes
  • 源码安装

环境信息

社区版,cpu: E5-2686 v4

缺陷描述

连接到linux主机时,出现 “接异常中断(关闭码 1006):未收到 Koko 结束通知,请检查网络、代理或 Koko 服务” 的错误,同时koko服务出现下面的报错:

go
[GIN] 2026/09/17 - 23:59:04 | 201 |  44.73ms |   192.168.10.21 | POST     "/koko/api/connect-ticket/"
SIGILL: illegal instruction
PC=0x342624c m=9 sigcode=2
signal arrived during cgo execution
instruction bytes: 0xc5 0xf8 0x10 0x5 0x74 0x87 0x26 0x4 0x48 0x8d 0x5 0x4d 0x87 0x26 0x4 0xc5

goroutine 167 gp=0x9d4f5a6b40 m=9 mp=0x9d4ef26808 [syscall]:
runtime.cgocall(0x33df480, 0x9d4f56d7e0)
	runtime/cgocall.go:167 +0x4b fp=0x9d4f56d7b8 sp=0x9d4f56d780 pc=0x4961cb
go.mitchellh.com/libghostty._Cfunc_ghostty_terminal_new(0x0, 0x9d4f0a5310, {0xa9, 0x29, 0xc8})
	_cgo_gotypes.go:3517 +0x46 fp=0x9d4f56d7e0 sp=0x9d4f56d7b8 pc=0x1ffd686
go.mitchellh.com/libghostty.NewTerminal.func1(...)
	go.mitchellh.com/libghostty@v0.0.0-20260710165742-102a50836ce6/terminal.go:314
go.mitchellh.com/libghostty.NewTerminal({0x9d4f56d8b0, 0x2, 0x9d4f56d8a0?})
	go.mitchellh.com/libghostty@v0.0.0-20260710165742-102a50836ce6/terminal.go:314 +0xd0 fp=0x9d4f56d860 sp=0x9d4f56d7e0 pc=0x2012310
github.com/LeeEirc/terminalparser.New({0x9d4f56d938, 0x2, 0x0?})
	github.com/LeeEirc/terminalparser@v0.0.0-20260807075323-d7ea2731c61e/tty.go:117 +0x105 fp=0x9d4f56d8d8 sp=0x9d4f56d860 pc=0x2019245
github.com/jumpserver/koko/internal/sessiontools.NewTerminalObserver(0x9d4f0a5298?, 0x4?)
	github.com/jumpserver/koko/internal/sessiontools/terminal_observer.go:42 +0xd7 fp=0x9d4f56d968 sp=0x9d4f56d8d8 pc=0x20416b7
github.com/jumpserver/koko/pkg/httpd.newTerminalToolController(0x9d4f396f00, 0x9d4f584bd0, 0x9d4eee4f00)
	github.com/jumpserver/koko/pkg/httpd/terminal_sessiontools.go:46 +0x77 fp=0x9d4f56dbd8 sp=0x9d4f56d968 pc=0x31cfc77
github.com/jumpserver/koko/pkg/httpd.(*tty).proxy(0x9d4eaa8420, 0x86d8f7?, 0x9d4f396f00)
	github.com/jumpserver/koko/pkg/httpd/tty.go:664 +0x635 fp=0x9d4f56dfb8 sp=0x9d4f56dbd8 pc=0x31d8eb5
github.com/jumpserver/koko/pkg/httpd.(*tty).handleTerminalInit.gowrap1()
	github.com/jumpserver/koko/pkg/httpd/tty.go:385 +0x1f fp=0x9d4f56dfe0 sp=0x9d4f56dfb8 pc=0x31d647f
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4f56dfe8 sp=0x9d4f56dfe0 pc=0x4a1b61
created by github.com/jumpserver/koko/pkg/httpd.(*tty).handleTerminalInit in goroutine 166
	github.com/jumpserver/koko/pkg/httpd/tty.go:385 +0x6cb

goroutine 1 gp=0x9d4e9f81e0 m=nil [chan receive]:
runtime.gopark(0x9d4f365338?, 0x9d4f365328?, 0x98?, 0x53?, 0x31bb4aa?)
	runtime/proc.go:462 +0xce fp=0x9d4f365348 sp=0x9d4f365328 pc=0x499a6e
runtime.chanrecv(0x9d4f0142a0, 0x0, 0x1)
	runtime/chan.go:667 +0x4ae fp=0x9d4f3653c0 sp=0x9d4f365348 pc=0x428c2e
runtime.chanrecv1(0x9d4ea06570?, 0x9d4f1b40a0?)
	runtime/chan.go:509 +0x12 fp=0x9d4f3653e8 sp=0x9d4f3653c0 pc=0x428752
github.com/jumpserver/koko/pkg/koko.RunForever({0x3ed4f3f?, 0x9d4eb02028?})
	github.com/jumpserver/koko/pkg/koko/koko.go:95 +0x458 fp=0x9d4f365ea0 sp=0x9d4f3653e8 pc=0x33669d8
main.main()
	github.com/jumpserver/koko/cmd/koko/koko.go:37 +0x285 fp=0x9d4f365f48 sp=0x9d4f365ea0 pc=0x336bd45
runtime.main()
	runtime/proc.go:290 +0x2d5 fp=0x9d4f365fe0 sp=0x9d4f365f48 pc=0x462015
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4f365fe8 sp=0x9d4f365fe0 pc=0x4a1b61

goroutine 2 gp=0x9d4e9f8d20 m=nil [force gc (idle), 1 minutes]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4ea72fa8 sp=0x9d4ea72f88 pc=0x499a6e
runtime.goparkunlock(...)
	runtime/proc.go:468
runtime.forcegchelper()
	runtime/proc.go:375 +0xb3 fp=0x9d4ea72fe0 sp=0x9d4ea72fa8 pc=0x462333
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ea72fe8 sp=0x9d4ea72fe0 pc=0x4a1b61
created by runtime.init.7 in goroutine 1
	runtime/proc.go:363 +0x1a

goroutine 3 gp=0x9d4e9f92c0 m=nil [GC sweep wait]:
runtime.gopark(0x78a6101?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4ea73788 sp=0x9d4ea73768 pc=0x499a6e
runtime.goparkunlock(...)
	runtime/proc.go:468
runtime.bgsweep(0x9d4ea9a000)
	runtime/mgcsweep.go:324 +0x151 fp=0x9d4ea737c8 sp=0x9d4ea73788 pc=0x4497d1
runtime.gcenable.gowrap1()
	runtime/mgc.go:214 +0x17 fp=0x9d4ea737e0 sp=0x9d4ea737c8 pc=0x43ab17
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ea737e8 sp=0x9d4ea737e0 pc=0x4a1b61
created by runtime.gcenable in goroutine 1
	runtime/mgc.go:214 +0x66

goroutine 4 gp=0x9d4e9f94a0 m=nil [GC scavenge wait]:
runtime.gopark(0x10000?, 0x40f3aa8?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4ea73f78 sp=0x9d4ea73f58 pc=0x499a6e
runtime.goparkunlock(...)
	runtime/proc.go:468
runtime.(*scavengerState).park(0x78a9000)
	runtime/mgcscavenge.go:425 +0x49 fp=0x9d4ea73fa8 sp=0x9d4ea73f78 pc=0x447229
runtime.bgscavenge(0x9d4ea9a000)
	runtime/mgcscavenge.go:658 +0x59 fp=0x9d4ea73fc8 sp=0x9d4ea73fa8 pc=0x4477b9
runtime.gcenable.gowrap2()
	runtime/mgc.go:215 +0x17 fp=0x9d4ea73fe0 sp=0x9d4ea73fc8 pc=0x43aad7
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ea73fe8 sp=0x9d4ea73fe0 pc=0x4a1b61
created by runtime.gcenable in goroutine 1
	runtime/mgc.go:215 +0xa5

goroutine 18 gp=0x9d4eb043c0 m=nil [GOMAXPROCS updater (idle), 1 minutes]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4ea6e788 sp=0x9d4ea6e768 pc=0x499a6e
runtime.goparkunlock(...)
	runtime/proc.go:468
runtime.updateMaxProcsGoroutine()
	runtime/proc.go:7095 +0xe7 fp=0x9d4ea6e7e0 sp=0x9d4ea6e788 pc=0x4709a7
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ea6e7e8 sp=0x9d4ea6e7e0 pc=0x4a1b61
created by runtime.defaultGOMAXPROCSUpdateEnable in goroutine 1
	runtime/proc.go:7083 +0x37

goroutine 19 gp=0x9d4eb04960 m=nil [finalizer wait, 1 minutes]:
runtime.gopark(0x4719f5?, 0x1c8?, 0xe0?, 0xe3?, 0x9d4ea72601?)
	runtime/proc.go:462 +0xce fp=0x9d4ea72620 sp=0x9d4ea72600 pc=0x499a6e
runtime.runFinalizers()
	runtime/mfinal.go:210 +0x107 fp=0x9d4ea727e0 sp=0x9d4ea72620 pc=0x439a87
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ea727e8 sp=0x9d4ea727e0 pc=0x4a1b61
created by runtime.createfing in goroutine 1
	runtime/mfinal.go:172 +0x3d

goroutine 20 gp=0x9d4eb050e0 m=nil [GC worker (idle), 1 minutes]:
runtime.gopark(0x1b365a6151506?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4ea6ef40 sp=0x9d4ea6ef20 pc=0x499a6e
runtime.gcBgMarkWorker(0x9d4eb120e0)
	runtime/mgc.go:1791 +0xeb fp=0x9d4ea6efc8 sp=0x9d4ea6ef40 pc=0x43d5eb
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1695 +0x17 fp=0x9d4ea6efe0 sp=0x9d4ea6efc8 pc=0x43d4d7
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ea6efe8 sp=0x9d4ea6efe0 pc=0x4a1b61
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1695 +0x105

goroutine 21 gp=0x9d4eb052c0 m=nil [GC worker (idle)]:
runtime.gopark(0x1b365a9f5c22f?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4ea6f740 sp=0x9d4ea6f720 pc=0x499a6e
runtime.gcBgMarkWorker(0x9d4eb120e0)
	runtime/mgc.go:1791 +0xeb fp=0x9d4ea6f7c8 sp=0x9d4ea6f740 pc=0x43d5eb
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1695 +0x17 fp=0x9d4ea6f7e0 sp=0x9d4ea6f7c8 pc=0x43d4d7
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ea6f7e8 sp=0x9d4ea6f7e0 pc=0x4a1b61
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1695 +0x105

goroutine 34 gp=0x9d4ef04000 m=nil [GC worker (idle)]:
runtime.gopark(0x1b365a9f5999d?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4ef0a740 sp=0x9d4ef0a720 pc=0x499a6e
runtime.gcBgMarkWorker(0x9d4eb120e0)
	runtime/mgc.go:1791 +0xeb fp=0x9d4ef0a7c8 sp=0x9d4ef0a740 pc=0x43d5eb
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1695 +0x17 fp=0x9d4ef0a7e0 sp=0x9d4ef0a7c8 pc=0x43d4d7
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ef0a7e8 sp=0x9d4ef0a7e0 pc=0x4a1b61
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1695 +0x105

goroutine 35 gp=0x9d4ef041e0 m=nil [GC worker (idle)]:
runtime.gopark(0x1b365a9f5d848?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4ef0af40 sp=0x9d4ef0af20 pc=0x499a6e
runtime.gcBgMarkWorker(0x9d4eb120e0)
	runtime/mgc.go:1791 +0xeb fp=0x9d4ef0afc8 sp=0x9d4ef0af40 pc=0x43d5eb
runtime.gcBgMarkStartWorkers.gowrap1()
	runtime/mgc.go:1695 +0x17 fp=0x9d4ef0afe0 sp=0x9d4ef0afc8 pc=0x43d4d7
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ef0afe8 sp=0x9d4ef0afe0 pc=0x4a1b61
created by runtime.gcBgMarkStartWorkers in goroutine 1
	runtime/mgc.go:1695 +0x105

goroutine 50 gp=0x9d4eb054a0 m=nil [cleanup wait, 1 minutes]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4ea74f68 sp=0x9d4ea74f48 pc=0x499a6e
runtime.goparkunlock(...)
	runtime/proc.go:468
runtime.(*cleanupQueue).dequeue(0x78a9580)
	runtime/mcleanup.go:522 +0xd4 fp=0x9d4ea74fa0 sp=0x9d4ea74f68 pc=0x4367d4
runtime.runCleanups()
	runtime/mcleanup.go:718 +0x45 fp=0x9d4ea74fe0 sp=0x9d4ea74fa0 pc=0x436e45
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ea74fe8 sp=0x9d4ea74fe0 pc=0x4a1b61
created by runtime.(*cleanupQueue).createGs in goroutine 1
	runtime/mcleanup.go:672 +0xa5

goroutine 51 gp=0x9d4eb05c20 m=nil [sleep]:
runtime.gopark(0x1b373a023c44a?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4ea74758 sp=0x9d4ea74738 pc=0x499a6e
time.Sleep(0x6fc23ac00)
	runtime/time.go:363 +0x165 fp=0x9d4ea747b0 sp=0x9d4ea74758 pc=0x49e365
github.com/jumpserver/koko/pkg/cache.(*ConnectTokenCache).run(0x9d4f1d61c0)
	github.com/jumpserver/koko/pkg/cache/token_cache.go:76 +0x27 fp=0x9d4ea747c8 sp=0x9d4ea747b0 pc=0x31150c7
github.com/jumpserver/koko/pkg/cache.NewConnectTokenCache.gowrap1()
	github.com/jumpserver/koko/pkg/cache/token_cache.go:30 +0x17 fp=0x9d4ea747e0 sp=0x9d4ea747c8 pc=0x31149b7
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4ea747e8 sp=0x9d4ea747e0 pc=0x4a1b61
created by github.com/jumpserver/koko/pkg/cache.NewConnectTokenCache in goroutine 1
	github.com/jumpserver/koko/pkg/cache/token_cache.go:30 +0x8a

goroutine 53 gp=0x9d4ef052c0 m=nil [select]:
runtime.gopark(0x9d4eef1cd8?, 0x4?, 0x70?, 0x0?, 0x9d4eef1c04?)
	runtime/proc.go:462 +0xce fp=0x9d4eef1a88 sp=0x9d4eef1a68 pc=0x499a6e
runtime.selectgo(0x9d4eef1cd8, 0x9d4eef1bfc, 0x9d4eef1e58?, 0x0, 0x0?, 0x1)
	runtime/select.go:351 +0xaa5 fp=0x9d4eef1bb8 sp=0x9d4eef1a88 pc=0x475885
github.com/jumpserver/koko/pkg/srvconn.(*SSHManager).run(0x9d4eeb17e0)
	github.com/jumpserver/koko/pkg/srvconn/sshclients.go:79 +0x1e5 fp=0x9d4eef1fc8 sp=0x9d4eef1bb8 pc=0x1a1dae5
github.com/jumpserver/koko/pkg/srvconn.newSSHManager.gowrap1()
	github.com/jumpserver/koko/pkg/srvconn/sshclients.go:61 +0x17 fp=0x9d4eef1fe0 sp=0x9d4eef1fc8 pc=0x1a1d8d7
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4eef1fe8 sp=0x9d4eef1fe0 pc=0x4a1b61
created by github.com/jumpserver/koko/pkg/srvconn.newSSHManager in goroutine 1
	github.com/jumpserver/koko/pkg/srvconn/sshclients.go:61 +0x11f

goroutine 54 gp=0x9d4ef054a0 m=nil [IO wait, 1 minutes]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:462 +0xce fp=0x9d4eae3790 sp=0x9d4eae3770 pc=0x499a6e
runtime.netpollblock(0x4ea57818?, 0x425946?, 0x0?)
	runtime/netpoll.go:575 +0xf7 fp=0x9d4eae37c8 sp=0x9d4eae3790 pc=0x45aa97
internal/poll.runtime_pollWait(0x79f2dddc9e00, 0x72)
	runtime/netpoll.go:351 +0x85 fp=0x9d4eae37e8 sp=0x9d4eae37c8 pc=0x498c45
internal/poll.(*pollDesc).wait(0x9d4eafa180?, 0x9d4ea57928?, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x27 fp=0x9d4eae3810 sp=0x9d4eae37e8 pc=0x514807
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0x9d4eafa180)
	internal/poll/fd_unix.go:613 +0x28c fp=0x9d4eae38b8 sp=0x9d4eae3810 pc=0x51988c
net.(*netFD).accept(0x9d4eafa180)
	net/fd_unix.go:150 +0x29 fp=0x9d4eae3970 sp=0x9d4eae38b8 pc=0x6fba09
net.(*TCPListener).accept(0x9d4eaf2040)
	net/tcpsock_posix.go:159 +0x1b fp=0x9d4eae39c0 sp=0x9d4eae3970 pc=0x7165db
net.(*TCPListener).Accept(0x9d4eaf2040)
	net/tcpsock.go:387 +0x30 fp=0x9d4eae39f0 sp=0x9d4eae39c0 pc=0x715870
crypto/tls.(*listener).Accept(0x9d4eace1f8)
	crypto/tls/tls.go:78 +0x24 fp=0x9d4eae3a30 sp=0x9d4eae39f0 pc=0x7c6ec4
net/http.(*onceCloseListener).Accept(0x412a508?)
	<autogenerated>:1 +0x1b fp=0x9d4eae3a48 sp=0x9d4eae3a30 pc=0x88021b
net/http.(*Server).Serve(0x9d4ef9e100, {0x4124d70, 0x9d4eace1f8})
	net/http/server.go:3434 +0x30c fp=0x9d4eae3b78 sp=0x9d4eae3a48 pc=0x85954c
net/http.(*Server).ServeTLS(0x9d4ef9e100, {0x4124c38, 0x9d4eaf2040}, {0x0, 0x0}, {0x0, 0x0})
	net/http/server.go:3503 +0x406 fp=0x9d4eae3d40 sp=0x9d4eae3b78 pc=0x859de6
net/http.(*Server).ListenAndServeTLS(0x9d4ef9e100, {0x0, 0x0}, {0x0, 0x0})
	net/http/server.go:3719 +0x115 fp=0x9d4eae3dc0 sp=0x9d4eae3d40 pc=0x85ab35
github.com/jumpserver/koko/pkg/srvconn.(*K8sReverseProxy).Start(0x9d4ea46990)
	github.com/jumpserver/koko/pkg/srvconn/conn_k8s_reverse_server.go:59 +0x374 fp=0x9d4eae3f88 sp=0x9d4eae3dc0 pc=0x19fd014
github.com/jumpserver/koko/pkg/srvconn.init.0.func1()
	github.com/jumpserver/koko/pkg/srvconn/conn_k8s_reverse_server.go:29 +0x17 fp=0x9d4eae3fe0 sp=0x9d4eae3f88 pc=0x19fcc37
runtime.goexit({})
	runtime/asm_amd64.s:1771 +0x1 fp=0x9d4eae3fe8 sp=0x9d4eae3fe0 pc=0x4a1b61
created by github.com/jumpserver/koko/pkg/srvconn.init.0 in goroutine 1
	github.com/jumpserver/koko/pkg/srvconn/conn_k8s_reverse_server.go:28 +0x6f

复现步骤

使用内置终端连接linux主机

期望结果

No response

补充信息

No response

尝试过的解决方案

No response