trzsz / trzsz-go

trzsz-go is the go version of trzsz, makes all terminals that support local shell to support trzsz ( trz / tsz ).
https://trzsz.github.io/go
MIT License
889 stars 53 forks source link

windows git-bash 下服务器切换用户后 trzsz 报错 #49

Closed potoo0 closed 8 months ago

potoo0 commented 8 months ago

trzsz 版本: go 1.1.7

客户端 (win11):

服务器(ubuntu 22.04):

使用 zsh 执行: trzsz ssh code@code.tx,连上服务器后在 tmux 内,code 用户可以正常 trz/sz,但切换到 root 用户在 tmux 下 trzsz 会报错。

完整 log:

# code @ vanarana in /tmp [10:52:09]
$ sudo su

# root @ vanarana in /tmp [10:52:11]
$ trz
::TRZSZ:TRANSFER:R:1.1.7:0917513596100:43575
[TrzszError] CFG: eJyqVkoqTSvOrEpVsjI0MLEwNTcz0FHKScxLV7JSSs9X0lEqKMovyU/Oz1GyMt
FRKsnMTc0vLVGyMjKoBQQAAP//CEYR1w==
goroutine 88 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.20.12/x64/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.newTrzszError({0xc00052c120, 0x60}, {0xc00001009
8, 0x3}, 0x1)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/comm.go:239 +0x272
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvCheckV2(0xc000408000, {0x11
6e994, 0x4})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/pipeline.go:389 +0x475
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).pipelineRecvFinalAck(0xc000415f
68?, 0xc0004ba000, 0x341, 0xc0003d0380)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/pipeline.go:623 +0x7f
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).pipelineRecvAck.func1()
        /home/runner/work/trzsz-go/trzsz-go/trzsz/pipeline.go:774 +0x5e5
created by github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).pipelineRecvAck
        /home/runner/work/trzsz-go/trzsz-go/trzsz/pipeline.go:711 +0xe8

goroutine 1 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.20.12/x64/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.newTrzszError({0xc0003b8000, 0x258}, {0xc0000180
f0, 0x4}, 0x1)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/comm.go:239 +0x272
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvCheck(0x1?, {0x5ddd2e, 0x3}
, 0x50?, 0xc00005a480?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:438 +0x152
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvBinary(0xc0000825a0?, {0x5d
dd2e?, 0x0?}, 0x30?, 0xc00007da40?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:499 +0x1e
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvFileMD5(0xc000122000, {0xc0
00018190, 0x10, 0x10}, {0x0, 0x0})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:1172 +0x76
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvFiles(0xc000122000, {0xc000
0927e6, 0x4}, {0x0, 0x0})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:1233 +0x3af
github.com/trzsz/trzsz-go/trzsz.recvFiles(0xc000122000?, 0xc000090b10, 0xc000096
000?, 0x92800?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/trz.go:95 +0x26f
github.com/trzsz/trzsz-go/trzsz.TrzMain()
        /home/runner/work/trzsz-go/trzsz-go/trzsz/trz.go:190 +0xa75
main.main()
        /home/runner/work/trzsz-go/trzsz-go/cmd/trz/main.go:33 +0x19

# root @ vanarana in /tmp [10:52:23]
$ tsz tsz_test
::TRZSZ:TRANSFER:S:1.1.7:0917531862000:33235
#CFG:eJyqVkoqTSvOrEpVsjI0MLEwNTcz0FHKScxLV7JSSs9X0lEqKMovyU/Oz1GyMtFRKsnMTc0vLVG
yMjKoBQQAAP//CEYR1w==!
                      #NUM:1!
                             #NAME:eJyqVipILMmIz0xRsjLQgbDzEnNTlayilUqKq+JLUotLl
GJ1lDKL41Myi5Ss0hJzilN1lBKLkjMyy1Lh/OLMqlQlK1MdpYLUolwlKxNjs1pAAAAA//9XRh2u!
[TrzszError] CFG: eJyqVkoqTSvOrEpVsjI0MLEwNTcz0FHKScxLV7JSSs9X0lEqKMovyU/Oz1GyMt
FRKsnMTc0vLVGyMjKoBQQAAP//CEYR1w==
goroutine 261 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.20.12/x64/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.newTrzszError({0xc00052c1e0, 0x60}, {0xc0001dc26
c, 0x3}, 0x1)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/comm.go:239 +0x272
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvCheck(0x1?, {0x116e974, 0x4
}, 0xa0?, 0xc000206480?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:438 +0x158
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvString(0x6?, {0x116e974?, 0
x3?}, 0x0?, 0x6?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:472 +0x1e
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvFileNameV3(0xc0001bc000, {0
xc0001f0238, 0x3}, {0x11d81a8, 0xc00007aa00})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/append.go:326 +0x8e
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvFiles(0xc0001bc000, {0xc000
1f0238, 0x3}, {0x11d81a8, 0xc00007aa00})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:1200 +0x15d
github.com/trzsz/trzsz-go/trzsz.(*TrzszFilter).downloadFiles(0xc0000000c0, 0x1?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/filter.go:354 +0x189
github.com/trzsz/trzsz-go/trzsz.(*TrzszFilter).handleTrzsz(0xc0000000c0)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/filter.go:424 +0x305
created by github.com/trzsz/trzsz-go/trzsz.(*TrzszFilter).wrapOutput
        /home/runner/work/trzsz-go/trzsz-go/trzsz/filter.go:699 +0x85f

goroutine 1 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.20.12/x64/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.newTrzszError({0xc0001f8300, 0x2d8}, {0xc0000190
fc, 0x4}, 0x1)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/comm.go:239 +0x272
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvCheck(0x1?, {0x5e84a4, 0x4}
, 0x50?, 0xc00005a480?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:438 +0x152
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvString(0x281d1fd03513e?, {0
x5e84a4?, 0x4?}, 0xe0?, 0xc0001ddb48?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:472 +0x1e
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).sendFileNameV3(0xc000002180, 0x
c00013fab0, {0x0, 0x0})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/append.go:218 +0xad
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).sendFiles(0xc000002180, {0xc000
0120f8?, 0x1?, 0x0?}, {0x0, 0x0})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:918 +0x1cd
github.com/trzsz/trzsz-go/trzsz.sendFiles(0xc000002180?, {0xc0000120f8, 0x1, 0x1
}, 0xc000074480, 0x81d3?, 0x17?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/tsz.go:94 +0xed
github.com/trzsz/trzsz-go/trzsz.TszMain()
        /home/runner/work/trzsz-go/trzsz-go/trzsz/tsz.go:186 +0x9ea
main.main()
        /home/runner/work/trzsz-go/trzsz-go/cmd/tsz/main.go:33 +0x19
lonnywong commented 8 months ago

因为切换用户后,TMUX 环境变量没了,不知道当前是不是 tmux 环境了。你可以试试 https://github.com/trzsz/trzsz-ssh ,配合 go 版的 trz / tsz ,如果没有中间跳板机之类,新版本默认会走隧道模式,应该能够避免这个问题。

potoo0 commented 8 months ago

因为切换用户后,TMUX 环境变量没了,不知道当前是不是 tmux 环境了。你可以试试 https://github.com/trzsz/trzsz-ssh ,配合 go 版的 trz / tsz ,如果没有中间跳板机之类,新版本默认会走隧道模式,应该能够避免这个问题。

tssh 可以正常工作,而且传输速度也快了很多。切换用户后确实 tmux 信息都丢失了,所以这个很难处理了是吗? 另外说到传输速度问题:trzsz 在取消传输时非常慢:

# code @ vanarana in /tmp [11:24:58]
$ trz
::TRZSZGO:TRANSFER:R:1.1.7:0917710786500:40555
context-menu.png [░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 0% | 0.00 B | --- B/s | --- ETA
v Stop and delete transferred files
v Stop and delete transferred files
v Stop and delete transferred files
Stopped and deleted:
- /tmp/context-menu.png

# code @ vanarana in /tmp [11:25:30]
$ # 这里取消至少 5s 都没有反应,有时十几秒都没有反应
lonnywong commented 8 months ago

切换用户后确实 tmux 信息都丢失了,所以这个很难处理了是吗?

是的,很不好处理。

trzsz 在取消传输时非常慢:

tssh 会有这个问题不?取消是个低频的操作,为了避免在屏幕上输出大量的乱码,会等待一定的时间,尽量确保传输过程中的内容都清理干净了,再退出。

potoo0 commented 8 months ago

tssh 会有这个问题不?

tssh 取消传输速度很快,没有这个问题