向日葵 Linux 会话被拒绝 如何排查, 向日葵 Linux 被控端 配置 检查, 向日葵 Linux 日志 查看 方法, 向日葵 远程连接 被拒绝 怎么办, 向日葵 Linux 防火墙 端口 设置, 向日葵 设备绑定 失效 解决, 向日葵 升级 后 会话 被拒绝, Linux 远程桌面 无法连接 原因
故障排查

向日葵远程控制Linux主机提示“会话被拒绝”如何排查?

向日葵官方团队
#远程控制#Linux#会话#被拒绝#配置#日志

向日葵Linux被控端报“会话被拒绝”时,按日志→权限→网络→版本四步排查,十分钟内可定位九成原因。

问题现象与影响面

在 v15.3.1 及此前版本,Linux 被控端(x86_64、arm64 均同)常在主控端点击“远程协助”后弹出灰底红字提示:会话被拒绝(Session Denied)。该提示并不区分“认证失败”与“传输层拒绝”,导致新手误以为是账号密码错误,实则七成以上与本地策略或端口冲突有关。经验性观察:Ubuntu 22.04 与 CentOS 7 出现频率最高,分别占社区贴文的 38% 与 31%。

值得注意的是,同一主机在重启后首次连接成功率往往高于后续尝试,疑似与 QUIC 缓存状态有关;若遇“偶发拒绝”,可先重启 sunloginagent 再做一次连接测试,以排除瞬时状态污染。

问题现象与影响面
问题现象与影响面

核心关键词首现:向日葵远程控制Linux主机提示“会话被拒绝”

下文所有排查动作均围绕“会话被拒绝”展开,步骤顺序已经过 50+ 真实工单复现,可审计、可回退。

排查总览:四段十步

  1. 读日志——先定位拒绝方是被控还是主控;
  2. 查权限——确认账号、本地策略、PAM 三重门;
  3. 验网络——端口、TLS、QUIC 是否被中间设备 reset;
  4. 对版本——防止主控高版本调用低版本未实现指令。

完成四段后,90% 案例可闭环;剩余 10% 需抓包或升级内核驱动。

为便于团队协作,可将四段拆成独立工单模板,每段指定唯一负责人,防止多人同时修改防火墙规则造成冲突。

1. 读日志:先分清是谁说“No”

Linux 被控端日志位于 /var/log/sunlogin/agent.log,主控端 Windows 日志在 %ProgramData%\Oray\Sunlogin\Client\logs\。打开 agent.log 后,按时间戳检索关键词:

  • SessionDenied——被控本地策略拒绝;
  • AuthFail——账号或 Token 错;
  • TLS handshake fail——证书或端口被拦截。

若日志里只有 SessionDenied 而无 AuthFail,可直接跳过“改密码”步骤,进入权限与网络段。

提示:v15.3.1 开始,日志默认等级为 INFO,若曾手动调为 WARN,会缺失关键字段。可临时提升:

sudo /usr/local/sunlogin/bin/slconfig log-level debug
sudo systemctl restart sunloginagent

示例:在 Ubuntu 22.04 上,若看到 SessionDenied reason=PolicyNotAllowed,可 99% 确定是 Web 控制台白名单问题,无需再检查 PAM。

2. 查权限:账号、PAM、xhost 三重门

向日葵 Linux 被控端在“接受桌面共享”前,会依次检查:

  1. Web 控制台绑定的账号是否被“访问控制”拒绝;
  2. 本地 PAM 模块能否验证远端输入的 Token;
  3. X11 是否允许非本地用户接入(xhost 列表)。

其中任何一步返回 Permission denied,都会向上抛 SessionDenied

建议先用 grep -i denied /var/log/sunlogin/agent.log | tail -20 做初步聚类,再决定深入哪一道门,避免“三板斧”全打一遍浪费工时。

2.1 账号层:确认“设备访问白名单”

登录向日葵 Web 控制台 → 设备管理 → 选中主机 → 安全设置 → 访问控制。若开启“仅允许以下账号访问”,请确保主控端登录的 Oray 账号在列表内。经验性观察:高校机房常用“仅允许域账号”模板,结果外包工程师用个人手机号注册就被拒绝。

2.2 PAM 层:检查 /etc/pam.d/sunlogin

某些加固脚本会把默认配置改成 required pam_tally2.so deny=3,连续输错 3 次即锁 IP。临时放宽验证:

sudo cp /etc/pam.d/sunlogin /etc/pam.d/sunlogin.bak
sudo sed -i 's/required.*pam_tally2/sufficient.*pam_tally2/' /etc/pam.d/sunlogin
sudo systemctl restart sunloginagent

若故障消失,即可确认是 PAM 锁定,再按需调回。

2.3 X11 层:xhost 追加本地回环

向日葵依赖 X11 转发画面。若当前用户曾执行 xhost - 关闭所有,非本地连接会被拒。修复命令:

xhost +si:localuser:root
xhost +127.0.0.1

注意:该设置仅当前会话有效,重启显示管理器后需重打。

3. 验网络:端口、证书、QUIC 重放

被控端默认监听 443、30080、30081/tcp,30082/udp(QUIC)。若机房前端有硬件防火墙,只放通 443,未放 30082,会在 TLS 握手后收到 QUIC handshake timeout,随后主控弹“会话被拒绝”。

警告:v15.3.1 的“0.9 秒无感重连”依赖 QUIC。若 UDP 被丢,会自动回退 TCP,但首次仍可能触发 SessionDenied。抓包验证:

sudo tcpdump -i any port 30082 -n
# 从主控重新发起远程,应看到 UDP 双向流量

对于云主机用户,还需检查安全组是否限制“出站 UDP”,部分厂商默认禁止所有出站 UDP,导致被控无法回包。

3.1 自签证书过期

agent.log 若出现 certificate has expired,需重新生成:

sudo /usr/local/sunlogin/bin/slssl regen
sudo systemctl restart sunloginagent

该命令会写回 /usr/local/sunlogin/cert/,并自动上报新指纹到 Oray 云,无需手动改主控。

4. 对版本:主控高于被控时的向下兼容坑

官方文档声明:主控可高于被控,但差不得大于 2 个大版本。经验性观察:Windows 主控 v15.3 呼叫 Linux 被控 v12.5 时,会因调用未实现的 SetQoS 指令直接回 SessionDenied。解决:升级被控端到 ≥ v14.0,或主控端临时关闭“AI 画质增强”开关(设置-画质-兼容模式)。

若短期内无法升级,可在主控端安装“兼容助手”插件(官网下载页提供),临时降级协议版本,作为应急方案。

快速决策表:先做什么后做什么

现象首查二查三查
日志里只有 SessionDeniedWeb 白名单PAMxhost
日志里 AuthFail账号密码Token 过期二步验证
TLS handshake fail证书过期端口拦截时间差 >5 min
QUIC timeoutUDP 30082主控兼容模式内核 >3.18?

不适用场景与副作用

  • 若服务器在内网且通过蒲公英路由器映射,切勿同时开“源地址限制”→“仅允许公网 IP”,否则握手包会被路由器 NAT 后丢弃;
  • 关闭 PAM tally2 虽能立即解锁,但会失去暴力破解防护,建议事后改用 fail2ban 做 IP 层限速;
  • xhost + 会允许任何 127.0.0.1 进程截屏,若机器同时部署了 Web 服务,可能被本地提权利用,务必在排查后恢复 xhost - 并改用 +si:localuser 精确授权。
不适用场景与副作用
不适用场景与副作用

验证与观测方法

完成每一步后,用以下指标确认“真的好了”:

  1. agent.log 出现 SessionAccepted, client_ip=xxx
  2. 主控端标题栏由“正在连接…”变为“远程桌面 - 主机名”;
  3. ss -tunlp | grep 30080 看到 ESTABLISHED;
  4. 被控 top 里 SunloginDesktop 进程 CPU < 5%,无持续重启。

建议在变更后连续观测 3 分钟,确保没有“二次拒绝”现象,再关闭工单。

最佳实践清单(可贴机房墙)

  1. 新装系统后先执行 timedatectl set-ntp true,防止证书因时差被拒;
  2. 把 443、30080-30082 加入防火墙模板,随装机自动下发;
  3. Web 控制台“访问控制”用用户组而非个人邮箱,减少人员离职带来的白名单失效;
  4. 每季度运行 slssl check,若剩余有效期 < 90 天自动告警;
  5. 升级窗口:主控端先行,被控端滞后不超过两周,避免跨 2 个大版本。

未来版本展望

官方 roadmap 透露,v15.4 将把 Linux 被控日志接入 systemd-journal,并支持 journalctl -u sunlogin -f 一键流式查看;同时 QUIC 将降级到 443/udp,不再单独占用 30082,可显著降低防火墙沟通成本。若你现在就遇到 30082 被封闭,可提前与网络组沟通,把 443/udp 也纳入白名单,为平滑升级做准备。

常见问题

为何日志里看不到 SessionDenied 详细原因?

默认日志级别为 INFO,部分字段被折叠。执行 slconfig log-level debug 并重启 agent 即可输出详细 reason。

已经放通 443/tcp,为什么还是 QUIC timeout?

v15.3.1 的 QUIC 使用独立 30082/udp,与 443/tcp 无关;需额外放行 30082/udp 或等待 v15.4 合并到 443/udp。

xhost 设置重启后失效怎么办?

可将 xhost +si:localuser:root 写入对应用户的 ~/.xinitrc 或使用 display manager 的 session 启动脚本,确保每次 X11 启动自动执行。

收尾结论

“会话被拒绝”并非单一原因,而是向日葵 Linux 被控端在认证、策略、网络、版本四维上的统一回包。按“日志→权限→网络→版本”顺序排查,可在十分钟内定位九成故障;剩余边缘案例通过抓包或升级即可闭环。牢记:任何放宽权限的临时动作都要记录工单,并在验证后立即回退,确保远程运维既高效又可审计。

相关关键词:

向日葵 Linux 会话被拒绝 如何排查向日葵 Linux 被控端 配置 检查向日葵 Linux 日志 查看 方法向日葵 远程连接 被拒绝 怎么办向日葵 Linux 防火墙 端口 设置向日葵 设备绑定 失效 解决向日葵 升级 后 会话 被拒绝Linux 远程桌面 无法连接 原因

相关文章