TeamViewer 软件为TeamViewer员工编写日志文件,以识别历史动作,技术故障排除和在TeamViewer (Classic)中发现的错误。
本文适用于所有 TeamViewer 用户。
通常,这些日志文件是供TeamViewer 员工使用的,而不是供最终用户使用的。 但是,最终用户也可以访问日志文件。
当打开日志文件时,您可能会发现它们不堪重负,因为其中包含很多数据。 为了透明起见,使人们感到安全,我们建立了一个指南,以帮助最终用户在基本级别上阅读日志文件,以识别传入连接的成功和失败尝试。
以下描述和给出的信息大大简化了,永远无法反映出TeamViewer 会话的实际创建方式。
本文旨在提供每个人都可以理解的一些基本知识和有限知识。为了使它尽可能简单和易于理解,我们决定使用一个比喻作为示例。
下面描述的内容在几毫秒内发生,并且基本上对于用户而言并不明显。在第3阶段中,该段落是一个过于简化的描述,以遵循该示例的图示,并且没有反映TeamViewer (Classic)密码验证的工作方式。 TeamViewer 看不到或不知道密码,并且永远不会看到它。密码是在客户端上本地检查的。
永远记住,日志文件是为故障排除而设计的。因此,日志文件所覆盖的时间是有限的。默认情况下,日志文件为1MB。当达到最大大小时,它将变为logfile_old并启动新的日志文件。 (发生这种情况时,以前的任何logfile_old都会被擦除)。
本文档无法涵盖所有发生错误的情况。请注意,万一发生意外情况,您将无法看到这些日志条目。
由于TeamViewer 连接是通过我们的中央服务器进行协商的,因此请务必注意,在成功进行传入连接之前,会进行大量的加密和身份验证。
有关TeamViewer 会话的更多信息,请参阅我们的安全手册。
📌注意:为了能够完全读取TeamViewer 日志文件,需要进行特定培训的TeamViewer 工作人员才能接受。
因此,对于不熟悉分析TeamViewer (Classic)日志文件的人来说,即使试图读取日志文件只是一次连接尝试,也很容易认为已经建立了会话。
阅读本文之后,您将能够区分连接尝试与成功连接。
成功连接是高度安全的加密和身份验证过程的结果,该过程实际上导致一个人能够看到远程设备。 根据设备上的设置,有限或完全远程访问是可能的。 您可以在TeamViewer (Classic)文件夹中找到的Connections_incoming.txt日志中列出了所有成功的连接。
连接尝试可能会或可能不会导致成功连接。 无法建立对远程设备的访问,并且尝试连接的人无法访问远程设备。
为了识别和解释呼入的TeamViewer (Classic)连接的五个阶段,我们举一个示例来帮助我们解释和可视化TeamViewer 连接。 此示例是 A尝试连接到 B计算机的设置。
作为此示例的第二层,我们使用电话的比喻,该比喻是在20世纪中叶通常在电话运营商的帮助下建立的。
💡记住:连接的每个阶段都必须成功。 单个失败将导致TeamViewer (Classic)拒绝连接。
在我们的实列- A尝试连接到 B的第一阶段,与 A输入B的电话号码且她的电话正在振铃相类似。
现在,我们暂停一下,并放大使 B 电话铃响的一切。假设中间有一个电话接线员收到鲍勃的请求:
A打电话给接线员:“你好接线员-这是 A。我想和 B谈谈”。
接线员:“是-请稍等”。
接线员打电话给 B。
接线员拨打她的电话时,B的电话正在响。
👉A 现阶段未与 B直接交谈。至此,我们尝试进行连接。以下是此尝试在日志文件中的外观的示例。
在这里,您还可以查看已使用哪些路由器进行连接尝试。选择所选择的路由器以保证最佳性能,并且可能会根据一天中的时间而有所不同。所有路由器均在ISO 27001认证的环境中,并且所有连接始终端到端加密。
注意事项:目前尚未建立连接:
CommandHandlerRouting[2]::CreatePassiveSession(): incoming session via AU-SYD-IBM-R008.teamviewer.com, protocol Tcp
B拿起电话:“你好-这是 B”
接线员:“您好 B-这是接线员。A 试图与您联系。您允许吗?”
B检查了她的名单并在允许名单上看到A之后,便回答:“是- A在我的名单上。我准备进行下一步的身份验证。”
👉由于 A 过去某个时候已被添加到 B 的允许列表中,因此 B 同意继续进行此连接尝试的过程。 A 现阶段并未直接与B交谈。 这样,我们仍然只能进行连接尝试。 下面是此检查在日志文件中的外观的示例。 注意事项:目前尚未建立连接:
CLoginServer::CheckIfConnectionIsAllowed() CLoginServer::AuthenticateServer()
👉万一 A 不在 B 的允许列表中,甚至不在其阻止列表中,B 完全拒绝与 A 对话,并且连接尝试将立即停止。 以下是此拒绝在日志文件中的外观的示例:
CLoginServer::CheckIfConnectionIsAllowed() CLoginServer::CheckIfConnectionIsAllowed: Partner 111111111 (A) not whitelisted CLoginServer::runServer: Connection is not allowed
接线员对 B说:“请稍等”,然后回到 A。
操作员说:“嗨,A, 与 B通话的密码是什么?”
鲍勃说:“是芝麻开门”
接线员说:“谢谢-请稍等”
操作员对Sally说:“嗨,B , A 说芝麻开门是密码”
🚨免责声明:这不是TeamViewer (Classic)密码的工作方式。 遵循该示例的图是一个过于简化的描述。 TeamViewer (Classic)看不到或不知道密码,并且永远不会看到它。 密码是在客户端上本地检查的。
如果 B 确认了密码,操作员会将两条线路连接在一起并留下连接(=成功的握手)。 这样,操作员将听不到 A 或 B 的声音。
👉在日志文件中检查“轻松访问”和密码如下(成功):
轻松访问 - 第一版
AuthenticationPublicKey_Passive::Verify: Success
固定密码
AuthenticationPasswordLogin_Passive::RunAuthenticationMethod: authentication using fixed password was successful
如果 B 说密码不正确,则过程可以返回到阶段3的开始。A 有了新的机会来输入正确的密码。 尝试失败次数过多后,B 和操作员将拒绝连接尝试,A 将被阻止一段时间。
👉在日志文件中检查轻松访问和密码,如下所示(不成功):
轻松访问 - 第二版
LookupPublicKeyV2: Manager {~keyabcd1234} does not have EasyAccess right, reject Authentication
动态密码
AuthenticationPasswordLogin_Passive::RunAuthenticationMethod: authentication using dynamic password was denied
A 能够通过轻松访问或密码成功进行身份验证之后,连接开始。
A 现在直接与 B交谈。 至此,我们已经建立了成功的联系。 以下是此成功连接在日志文件中的外观的示例:
CPersistentParticipantManager::AddParticipant: [111111111,-123456789] type=3 name=Bob CPersistentParticipantManager::AddParticipant: [222222222,-987654321] type=6 name=Sally CPersistentParticipantManager::AddParticipant: [111111111,-123456789] type=3 name=Bob
在任何时候,B 或 A 都可以终止连接,并且连接已完成,而 A 和 B不再能听到对方的声音。 如果他们想再次交谈,则需要从阶段1重新开始。
👉下面是一个成功连接的会话结束在日志文件中的样子的示例:
SessionManagerDesktop::SessionTerminate: removing session with TVSessionID = -123456789
如果A 无法通过轻松访问或密码成功进行身份验证,则将完全拒绝其连接尝试。 根本没有任何连接。
👉以下是不成功连接的会话结束在日志文件中的外观示例:
SessionManagerDesktop::SessionTerminate: no session with ID=123456789, aborting logins
💡提示:TVSessionID和ID的日志文件中显示的ID不是TeamViewer (Classic) ID,而是各个会话的ID-这些ID不能用于标识任何人或任何设备,也不能用于连接任何人。
111111111 - A TeamViewer (Classic) ID
222222222 - B TeamViewer (Classic) ID
123456789 - session ID 1 (= no TeamViewer ID)
987654321 - Session ID 2 (= no TeamViewer ID)