疑难杂症
主机每次重启或者ssh服务重启ssh-ed25519都会改变
现象:
原因分析:
(感觉当前现象还是很奇怪,不太对劲,不过暂时不想找问题了)
client的ssh登录有缓存,之前成功登录的方式,本机缓存还在就还能继续登录。(eg:远程机faceunity当前设置passwordauthentication yes,fu10使用密码成功登录,faceunity再设置passwordauthentication no,并彻底重启sshd服务,fu10在未重启的情况下仍旧可以通过密码登录,而其他机器不行了,这个是当前现象)。然后我本机登陆不上的原因就是我刚才重启本机了,而且之前faceunity机器的sshd有更新过,配置文件发生了变换。所以我本机登录不了了。
解决办法: 没找到具体问题,初步看可能是ssh更新了,配置文件/etc/ssh/sshd_config被改掉了,重新开启PubkeyAuthentication并且关闭密码登录,然后重启即可,因为ssh配置生效似乎需要所有ssh断开之后。
最终问题找到了: 服务器的sshd配置出问题了
# 首先检查/etc/ssh下ssh主机密钥是否正确
ls -l /etc/ssh/ssh_host_*
# 如果权限不正确,需要修改
sudo chmod 600 /etc/ssh/ssh_host_*
# 权限配置完之后,查看ssh配置文件中密钥配置是否正确
# /etc/ssh/sshd_config 中下述的配置需要存在,且不能被注释掉。
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key另外老是连不上的问题是 IP冲突了!!!!!
僵尸进程清理
下述方式还是杀不掉的话,直接重启吧。
# 列出所有僵尸进程的信息
ps aux | grep 'Z'
# 打印进程信息,其中就包含了父进程的pid
cat /proc/pid/status
# 列出所有僵尸进程的父进程ppid
ps -eo pid,ppid,stat,cmd | grep ' Z'
# EG: defunct表示父进程已经终止了,子进程编程孤儿进程了
1437732 2388881 Z [python] <defunct>
# 杀掉进程
sudo kill -9 pid在杀掉僵尸进程的父进程之后,其子进程会变成孤儿进程,孤儿进程的父进程会归于 1 (也就是init进程),而init进程会定期检查并清理僵尸进程。
手动触发init进程的僵尸进程清理:
# 向init进程发送SIGCHLD信号
sudo kill -SIGCHLD <init_pid>遇到No display
- 查看一下是不是hdmi/vga/dvi线没连好。
- 虚拟显示器一直没有配置好,可能确实需要hdmi模拟器了。
NAS (fnOS) 环境下 Neovim 安装及 rsync 权限翻车
现象:
- LazyVim 启动报错:
attempt to call upvalue 'uri_encode' (a nil value)、module 'vim.tty' not found。 - 系统目录权限异常:查看
/usr/local时,发现目录本身以及bin、lib、share权限变成了d---------(000无任何权限),属主变成了普通用户k:Users,普通用户甚至无法cd或读取该目录。
原因分析:
Neovim 启动报错:版本与 runtime 不匹配。Neovim 0.12+ 依赖配套的
runtime目录(如vim.tty模块),如果系统残留旧版runtime,或只拷了二进制程序漏掉了runtime,就会报模块找不到的错误。权限被彻底锁死(核心事故链):
- Btrfs 存储池的 ACL 特性:在飞牛 fnOS(NAS 系统)的 Btrfs 数据盘上解压 tar 包时,由于 NAS 开启了网络共享 ACL 访问控制,新解压出来的文件夹在底层传统的 POSIX 权限位呈现为
000(d---------),访问权限完全由底层的扩展 ACL 维护。 rsync -a跨文件系统缺陷:执行sudo rsync -avH ./ /usr/local/时:-a默认同步 POSIX 基础权限(把000拷了过去),但没有带-A(丢弃了 ACL 规则)。系统盘ext4只认 POSIX 权限,直接对所有人锁死。- 源路径写
./会将当前目录.自身的属性直接覆盖到目标根目录/usr/local/,导致上层目录的属主和权限一并被改乱。
- Btrfs 存储池的 ACL 特性:在飞牛 fnOS(NAS 系统)的 Btrfs 数据盘上解压 tar 包时,由于 NAS 开启了网络共享 ACL 访问控制,新解压出来的文件夹在底层传统的 POSIX 权限位呈现为
最佳实践与推荐用法:
- NAS / 个人服务器上安装开发工具,首选装在用户家目录,不使用
sudo,完全避免污染系统目录与 ACL 冲突:
# 解压到家目录并重命名
tar -xzf nvim-linux-x86_64.tar.gz
mv nvim-linux-x86_64 ~/nvim
# 加入个人 PATH
echo 'export PATH="$HOME/nvim/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc- 必须写入全局系统目录(
/usr或/usr/local)时的正确姿势:- 推荐使用普通
cp(不带-p时,会自动使用 root 身份创建文件,并重置为系统默认的标准 755/644 权限,避免带入怪异权限):sudo cp -r nvim-linux-x86_64/* /usr/local/ - 使用独立目录 + 软链接(清晰易维护,不污染 runtime):
# 将整套完整包放入 /opt sudo mv nvim-linux-x86_64 /opt/nvim # 仅软链接可执行程序,Neovim 会自动沿相对路径寻找自身的 runtime sudo ln -sf /opt/nvim/bin/nvim /usr/local/bin/nvim - 如果一定要用
rsync合并到系统目录,去除-p(perms)、-o(owner)、-g(group),避免覆盖系统目录属性:sudo rsync -rltvH --progress ./ /usr/local/
- 推荐使用普通
Ubuntu 服务器 RustDesk 连不上(GNOME 锁屏阻塞导致)
现象:
- Ubuntu 服务器开机正常,SSH 可以秒连。
- 使用 RustDesk 远程连接时失败(无法建立画面连接/卡住)。
- 初步怀疑:GDM 桌面服务或 RustDesk 服务未成功拉起。
排查过程:
| 排查步骤 | 检查命令 | 实际现象 / 结论 |
|---|---|---|
| ① 检查桌面管理服务 | systemctl status gdm | GDM 服务正常;虽然日志有远程显示断言警告(可忽略),但主进程健康。 |
| ② 检查桌面图形会话 | loginctl list-sessionsps aux | grep -E "gnome-shell|Xorg" | Xorg 和 gnome-shell 都在正常运行,使用的是 X11 模式(tty2),属于用户 k(UID 1000)。桌面环境无故障。 |
| ③ 检查 RustDesk 服务 | systemctl status rustdesk | 服务完全正常,守护进程与托盘均在运行;Cannot load libcuda.so.1 仅代表无英伟达硬编加速,自动回退到 CPU 软编,属正常行为。 |
| ④ 发现致命细节 | loginctl list-sessions | 发现用户会话状态显示 IDLE: yes,且后台有 org.gnome.ScreenSaver 进程,说明屏幕已进入空闲锁屏/休眠状态。 |
根本原因: GNOME 锁屏阻塞——Ubuntu 桌面因超时无操作触发了息屏锁屏(ScreenSaver),导致 RustDesk 无法正常捕获显示画面并建立连接。
解决办法(临时,立即恢复连接):
# 直接在登录用户终端执行(无需加 sudo)
loginctl unlock-sessions
