麒麟系统远程连接失败的根本原因集中在服务未就绪、端口被拦截、认证被拒或监听地址错误四类障碍;需依次验证sshd/vnc服务状态、端口监听(ss/netstat)、防火墙放行、核心配置项(permitrootlogin等)、selinux/x11权限及网卡ip有效性。

麒麟系统无法连接到远程服务器,通常表现为SSH连接超时、VNC提示“连接被拒绝”、RDP黑屏或直接无响应,根本原因集中在服务未就绪、端口被拦截、认证被拒或监听地址错误这四类硬性障碍上。
先确认远程服务是否真正运行
别急着改配置,先看服务有没有活过来。银河麒麟V10默认不启动SSH或VNC,装完≠跑起来。
执行 systemctl status sshd,如果显示 【failed】 或 【inactive (dead)】,说明守护进程压根没起来——此时改任何配置都无效。
对VNC,运行 systemctl --user status vino-server(注意是--user),若提示“No such file or directory”,代表GNOME原生VNC服务根本没注册进当前用户会话。
遇到 failed 状态,立刻执行 journalctl -u sshd -n 30 查最后30行日志,重点盯 Permission denied(私钥权限错)、Could not load host key(/etc/ssh/ssh_host_* 文件属主不是 root:root)这两类报错。
检查端口监听与防火墙放行
服务跑着,但端口没露出来,等于锁着门喊人进来。
查SSH:运行 ss -tlnp | grep :22,输出里必须有 sshd 进程绑定在 *:22 或具体IP:22;若只显示 127.0.0.1:22,说明它只听本地回环,外部连不上。
查VNC:运行 netstat -tuln | grep :5900,GNOME Vino 默认用5900,TigerVNC常用5901——端口号必须和客户端填的一致。
防火墙必须显式放行:
图形方式:打开【安全中心】→【网络保护】→【配置访问规则】→添加新规则,协议选TCP,目的端口填22或5900,动作选“允许”。
命令行方式(firewalld):sudo firewall-cmd --add-port=22/tcp --permanent && sudo firewall-cmd --reload。
【关键提醒】 若用 ufw,必须先 sudo ufw enable 才能生效;否则 ufw allow 22 是空操作。
验证核心配置项是否启用
配置文件写错了,服务再健康也白搭。两处最常踩坑的位置:
SSH:打开 /etc/ssh/sshd_config,确认以下三行取消注释且值为 yes:
PermitRootLogin yes
PasswordAuthentication yes
ListenAddress 0.0.0.0(删掉这一行或改成 0.0.0.0,避免绑定到 127.0.0.1)
VNC(GNOME):运行 gsettings get org.gnome.vino enabled,返回 true 才算启用;若为 false,执行 gsettings set org.gnome.vino enabled true。
密码必须 Base64 编码:执行 gsettings set org.gnome.vino vnc-password '$(echo -n "MyPass123" | base64)',【注意双引号不能丢,否则换行符会被编码进去导致密码失效】。
排除SELinux与X11访问限制
SELinux 和 X11 权限是隐藏杀手,尤其在麒麟SP1/SP2版本中高频触发。
临时关闭 SELinux 测试:执行 sudo setenforce 0,再试连接。若成功,说明是 SELinux 拦截,需永久放行:sudo setsebool -P vncserver_connect_network on。
向日葵或部分VNC客户端连不上?执行 xhost + 允许所有X客户端连接——这步能绕过 Client is not authorized to connect to Server 错误,但仅限测试,用完立即 xhost - 关闭。
检查网卡IP是否真实生效:运行 ip a,找你实际用的网卡(如 enp0s3),确认有 IPv4 地址且不是 169.254.x.x(这是DHCP失败的自动生成地址)。











