client$ task sync
Syncing with <hostname>.localdomain:53589
Handshake failed. The TLS connection was non-properly terminated.
Sync failed. Could not connect to the Taskserver
TL; DR我很确定这不是证书问题,但更可能与WSL实现中的客户端/服务器交互有关。我可以通过telnet和netcat进行连接,但是当我尝试从客户端进行同步时,任务调试器什么也没收到。我可以但是从与服务器在同一台计算机上的客户端进行同步。如果有人可以分享有关进度的建议或一些调试技巧,我将不胜感激!
操作系统:Ubuntu 20.04 LTS(在WSL,Windows 10中运行)
$hostname -f
的逐字结果称为<hostname>.localdomain
私有IP:192.168.1.20
server$ taskd diagnostics
taskd 1.1.0
Platform: Linux
Hostname: <hostname>
Compiler
Version: 9.3.0
Caps: +stdc +stdc_hosted +200809 +200809 +LP64 +c8 +i32 +l64 +vp64 +time_t64
Compliance: C++11
Build Features
Built: Jun 16 2020 14:36:11
CMake: 3.16.3
libuuid: libuuid + uuid_unparse_lower
libgnutls: 3.6.13
Build type: release
Configuration
TASKDDATA: /var/taskd
root: /var/taskd (readable)
config: /var/taskd/config (readable)
CA: /var/taskd/ca.cert.pem (readable)
Certificate: /var/taskd/server.cert.pem (readable)
Key: /var/taskd/server.key.pem (readable)
CRL: /var/taskd/server.crl.pem (readable)
Log: /var/log/taskd.log (found)
PID File: /home/rob/taskd.pid (found)
Server: <hostname>.localdomain:53589
Max Request: 1048576 bytes
Ciphers:
Trust: allow all
这是与服务器在同一局域网上不同的机器
操作系统:Ubuntu 20.04 LTS(在WSL,Windows 10中运行)
client$ task diagnostics
task 2.5.1
Platform: Linux
Compiler
Version: 9.2.1 20200306
Caps: +stdc +stdc_hosted +LP64 +c8 +i32 +l64 +vp64 +time_t64
Compliance: C++11
Build Features
CMake: 3.16.3
libuuid: libuuid + uuid_unparse_lower
libgnutls: 3.6.11
Build type: None
Configuration
File: /home/rob/.taskrc (found), 1622 bytes, mode 100666
Data: /home/rob/.task (found), dir, mode 40755
Locking: Enabled
GC: Enabled
Server: B160227-RBC.localdomain:53589
Trust: allow all
Certificate: /home/rob/.task/rob_home.cert.pem, readable, 4015 bytes
Key: /home/rob/.task/rob_home.key.pem, readable, 24742 bytes
Ciphers: NORMAL
Creds: Public/Rob Home/************************************
Hooks
System: Enabled
Location: /home/rob/.task/hooks
(-none-)
Tests
$TERM: xterm-256color (346x102)
Dups: Scanned 0 tasks for duplicate UUIDs:
No duplicates found
Broken ref: Scanned 0 tasks for broken references:
No broken references found
我已阅读以下内容
我一直在尝试搜索我遇到的问题,但是还没有找到解决我特定问题的任何东西。
由于我自己的调试,系统当前处于以下状态:
我可以从客户端通过telnet连接到服务器:
client$ telnet <hostname>.localdomain 53589
Trying 192.168.1.20...
Connected to <hostname>.localdomain.
Escape character is '^]'.
server$ nc -vv -l 192.168.1.20 53589
Listening on 192.168.1.20 53589
然后运行
client$ nc -vv 192.168.1.20 53589
Connection to 192.168.1.20 53589 port [tcp/*] succeeded!
我在服务器上收到以下消息...
Connection received on 192.168.1.19 53885
我发现连接是通过端口53885接收到的,这很奇怪-它不应该来自客户端计算机上的53589吗?
我尝试使用taskd server --data $TASKDDATA
在调试模式下运行任务服务器。由此,我能够成功地从服务器计算机上的第二个客户端进行连接,并在日志中查看结果。但是,当我从客户端计算机运行task sync
时,什么也没显示。
我检查了"Handshake Failed"特定的页面,结果如下:
client$ openssl s_client -CAfile .task/ca.cert.pem -host 192.168.1.20 -port 53589
CONNECTED(00000003)
当我在服务器上生成证书时,位于〜/ taskd-1.1.0 / pki / vars CN = .localdomain中。
server$ certtool -i < server.cert.pem | grep Subject:
Subject: O=Göteborg Bit Factory,CN=<hostname>.localdomain
lsof -i TCP:53589 -s TCP:LISTEN
或netstat -tl | grep 53589
完全没有响应,但是我认为这更多与在WSL上运行服务器的复杂性有关。从服务器的调试日志中,我猜想taskwarrior客户端根本无法“看到”任务服务器。但是令我困惑的是,我已经验证了客户端和服务器计算机可以通过正确的端口进行通信(#53589)。
我已经参加了几天,我很确定自己一定会遗漏一些明显的东西。任何指导都将非常非常感激!