
直接开工。麒麟信安其实不用我多介绍做国产化替代、涉密内网项目、电力能源行业信创落地的同学应该多少都摸过。它是基于openEuler构建的商业发行版走的是高安全、高可用那一挂。咱们今天要聊的是3.3-6C这个电网定制版本在VMware虚拟机上从零开始装系统最后把SSH远程连接跑通的全流程。整个过程我踩了不少坑有些坑属于不看文档根本不知道的那种今天全写出来给你们避雷。我只说实际遇到的和验证过的东西不整虚的。这篇东西适合正在做麒麟信安适配、或者需要在本地搭一套电网版测试环境的人看。无论你用的是VMware Workstation还是VirtualBox思路完全通用。小白照着做也能搞定老手可以直接跳到“SSH配置”那节看避坑点。1. 安装前置准备镜像下载与虚拟机规格规划1.1 麒麟信安3.3-6C电网版ISO到底从哪下载先说镜像来源。麒麟信安官方提供下载渠道3.3-6C电网版属于行业定制版普通社区版本页面有时候看不到入口需要找“行业版”或“电力版”分类。如果你有项目合作身份建议直接找销售或技术支持要专属下载链接和离线包这样拿到的镜像是最完整、最新补丁的。如果只是个人测试学习通过公开渠道下载社区版或试用版也能安装核心安装流程和后续配置无本质差别。下载的时候重点关注这几个文件属性文件名带x86_64或aarch64取决于你的宿主机CPU架构ISO体积通常3.5GB到4.5GB左右低于2GB的一定不是完整安装盘下载完成后用SHA256校验一下官方页面一般会给出哈希值我习惯在Linux下用sha256sum命令校验Windows用PowerShell的Get-FileHash也可以。这一步很多人跳过但做信创的应该懂镜像被篡改或者下载不全导致安装中途报错浪费的时间远超校验那几十秒。1.2 虚拟机规格怎么分配才好用麒麟信安3.3-6C虽然定位是服务器系统但我建议虚拟机配置给得稍微宽裕点别抠门。这个版本带了不少行业组件和安全模块开机自启的服务比普通Linux多内存给少了容易卡在图形安装界面。我的实测推荐配置如下配置项推荐值最低要求备注CPU4核2核编译器、数据库等任务需要多核内存8GB4GB低于4GB图形安装界面容易卡死磁盘80GB50GBLVM分区建议留足扩展空间网络适配器NAT模式NAT桥接模式会导致IP变动频繁显示器自动侦测-安装阶段无需3D加速内存和CPU这两个强烈建议不要低于“最低要求”。我最初用2核4GB跑过一次安装界面卡到鼠标基本失灵最后换回4核8GB才顺利跑完流程。也别一次给太多后台跑着的VMware还有别的虚拟机资源争抢同样会引发磁盘IO异常。1.3 虚拟机创建阶段要避开的三个坑在VMware Workstation中新建虚拟机时选择操作系统类型记得找“Red Hat Enterprise Linux 8.x”或“CentOS 8.x”麒麟信安基于openEuler内核特性和RHEL系兼容最好。如果VMware版本太老没有这个选项选“其他Linux 5.x内核 64位”也行。固件类型选UEFI还是BIOS实测两种都能装但如果你想后续升级到支持安全启动的内核建议选UEFI。选完UEFI后记得在虚拟机设置里勾选“启用安全引导”麒麟信安电网版的加密模块会验证内核签名这一步不做有些签名模块会加载异常。还有一个容易被忽略的虚拟化引擎设置。如果你的宿主机CPU支持嵌套虚拟化建议勾选“虚拟化Intel VT-x/EPT或AMD-V/RVI”这样系统内的容器或KVM功能才能正常工作。不勾也能装系统但后续跑容器会出现奇奇怪怪的权限错误排查起来极费时间。2. 系统安装全流程从引导到首次重启2.1 安装引导与语言选择的处理ISO挂载到虚拟光驱后开机首先进入GRUB引导菜单。这里有两个选项Install KylinSec和Test this media install KylinSec。建议直接选第一个第二个校验介质完整性要跑很久在虚拟机里没有意义。系统引导完成后进入语言选择界面默认有简体中文选上继续就行。有一个细节键盘布局默认跟随语言如果后续要用代码编辑器或SSH逆向操作键盘保持“英语(美国)”布局反而更顺手因为在终端里输入命令时中英文标点切换很影响效率。这个看个人习惯安装阶段不用纠结。语言后面会进入安装摘要页这里有几个地方必须手动处理直接点“开始安装”是装不好系统的。2.2 安装目的地分区方案规划进入“安装目的地”默认是“自动分区”并且会勾选“加密”选项。电网版出于安全考虑默认把加密打开了。如果你只是本地测试环境建议取消加密因为每次开机都要输密码且忘记密码基本等于数据全丢没有找回通道。分区方案我有两种推荐手动分区生产环境推荐挂载点大小文件系统/boot1GBxfs/ 根分区30GBxfs/home10GBxfsswap8GBswap/data或按需剩余全部xfs自动分区测试环境推荐直接用默认LVM方案后续用lvextend命令扩展逻辑卷灵活度更高。实际测下来如果想要省心就用LVM自动分区如果你不确定后面的业务要在哪个目录存储数据就选这个不用猜。如果你已经规划好应用部署路径比如数据库要放/data那最好手动分区。注意一点/boot不要给太小麒麟信安内核升级后旧的启动文件不会自动清给1GB最稳妥。2.3 软件包选择与安装源“软件选择”这个步骤分值很高。麒麟信安电网版默认安装的是“服务器”环境内含一组基础服务组件。如果你只是想搭一个测试环境建议在左侧选择“带图形界面的服务器”右侧勾选“开发工具”和“系统管理工具”。开发工具组包含gcc、make、git等后面编译安装软件会用到别偷懒跳过。“安装源”默认指向本地ISO这个不用动。如果你用的是U盘制作的安装介质确保U盘在安装过程中不被移除。虚拟机场景下不存在这个问题但物理机安装时这是一个高频翻车点。全部确认后点“开始安装”设置root密码并创建一个普通用户。root密码建议至少12位以上组合大小写字母加数字和特殊字符。电网版对密码复杂度有校验太简单会直接拒绝设置。普通用户记得勾选“允许该用户通过SSH登录”后续用SSH操作时不允许root直连的话就用这个用户。等待安装进度条走完点击重启并取出安装介质。首次重启后如果出现“Initial setup”界面这是系统初始化阶段需要点“许可信息”接受License Agreement并设置或确认时间同步源。这一步做完才算真正进入系统桌面。3. 系统初始化配置网络、更新源与基础环境3.1 网络配置nmcli命令行实操重启完成后进入系统第一件事是搞定网络。虚拟机默认NAT模式会通过DHCP获取IP但你最好固定下来不然每次重启IP都可能变SSH配置也白配。麒麟信安使用NetworkManager管理网络。在终端执行nmcli con show你会看到一个类似于Wired connection 1的connection名称这就是当前活跃的网络连接。先把它改名为方便识别的名字nmcli con mod Wired connection 1 connection.id eth0然后把IP分配方式改为静态nmcli con mod eth0 ipv4.addresses 192.168.10.128/24 nmcli con mod eth0 ipv4.gateway 192.168.10.2 nmcli con mod eth0 ipv4.dns 114.114.114.114 223.5.5.5 nmcli con mod eth0 ipv4.method manual nmcli con up eth0网关地址怎么确定在VMware NAT模式下默认网关通常是宿主机的VMnet8网卡IP可以通过在宿主机执行ipconfig查看。我在Windows宿主机上看到VMnet8是192.168.10.1那虚拟机网关就填192.168.10.1。你最好先看一下自己VMnet8的实际配置硬套我的IP会连不上。固定IP后用ping baidu.com验证外网连通性。如果ping不通但ping 114.114.114.114通了那是DNS问题重新检查上面的DNS配置。3.2 更新源配置本地yum源与在线源切换麒麟信安电网版安装完默认配置的是企业内网更新源个人测试环境用不了需要换成公共源或本地ISO源。先备份原有repo文件mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/如果你的虚拟机可以联网直接创建openEuler公共源配置文件。麒麟信安和openEuler的软件包兼容性很高在测试阶段用这个方法最方便vim /etc/yum.repos.d/openEuler.repo写入如下内容[openEuler] nameopenEuler baseurlhttps://repo.openeuler.org/openEuler-22.03-LTS-SP3/everything/x86_64/ enabled1 gpgcheck0执行yum clean all yum makecache生成缓存。如果你所在环境完全离线就挂载ISO为本地源方法如下mount -o loop /dev/cdrom /mnt然后创建本地repo文件指向/mnt目录。我试过两种方式各有各的适用场景在线源用起来最舒服软件包版本也新本地源胜在稳定离线环境必选而且不会因为网络波动导致安装中断。如果你搞生产环境我强烈建议用本地源软件版本可控不冷不热的更新也不会破坏环境一致性。3.3 主机名与时间同步固定主机名特别是要加入域或做集群测试的不然后续配置文件里到处是localhost改起来头大hostnamectl set-hostname kylinsec-test时间同步用chrony麒麟信安默认装了。如果没装就执行yum install -y chrony然后启动服务systemctl enable --now chronyd chronyc sources -v时间同步这个问题容易被忽略但SSH连接认证和后续安装数据库时对时间敏感度极高。我有一次测试环境时间差了一分钟导致访问内部服务一直报证书过期排查了半天才发现是系统时间没同步。虚拟机尤其容易这样宿主机暂停恢复后系统时间会偏差。3.4 安全模块初始检查电网版默认启用了firewalld和SELinux。测试阶段可以直接把它们关掉省得后面SSH连接被防火墙拦systemctl disable --now firewalld setenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config如果你不想关防火墙务必放行需要的端口firewall-cmd --permanent --add-servicessh firewall-cmd --permanent --add-port3306/tcp firewall-cmd --reloadSELinux在生产环境不建议关但测试环境关掉能省下大量排障时间。系统自动从LocalSystem切换到NetworkService时SELinux会拦SSH模块上下文转换。装了第三方软件后SELinux的上下文没配好服务起不来这类问题排查一次少说两个小时。4. SSH服务配置与远程连接排障4.1 检查并启动SSH服务安装系统时如果选了“服务器”环境openssh-server一般会默认装上。如果没有手动安装yum install -y openssh-server openssh-clients启动并设置开机自启systemctl enable --now sshd systemctl status sshd状态输出里看到Active: active (running)就说明服务正常。如果看到failed多半是/etc/ssh/sshd_config里有非法配置项或端口被占用。可以执行ss -tlnp | grep 22查看端口是否在监听网卡的SSH服务监听也有讲究默认监听所有网卡的0.0.0.0:22如果你在sshd_config里锁了ListenAddress那就要确保IP填对了。4.2 SSH配置文件核心参数详解SSH能否顺利连接很大程度取决于/etc/ssh/sshd_config里的几个参数我逐一说vim /etc/ssh/sshd_config需要重点确认和修改的参数参数推荐值作用备注Port22SSH监听端口改高位端口能防扫描但需同步改防火墙PermitRootLoginno禁止root直接登录生产环境强烈建议noPubkeyAuthenticationyes开启密钥认证配合免密登录使用PasswordAuthenticationyes允许密码登录首次连接时使用密钥配对后可改为noUseDNSno不解析客户端DNS等DNS超时会阻塞连接GSSAPIAuthenticationno关闭GSSAPI认证跨网段连接时会卡这三处我都踩过坑尤其UseDNS和GSSAPIAuthentication。如果你发现SSH连接输入密码后卡住好几秒才进入系统十有八九是这两个参数没改成no。它们会导致服务器反查客户端域名耗时又没必要。改完后重启服务systemctl restart sshd4.3 SSH密钥免密登录配置生产环境或日常频繁操作我更推荐用密钥登录。首先生成密钥对在宿主机上执行ssh-keygen -t ed25519 -C your_emailexample.com一路回车即可。这会在当前用户家目录生成~/.ssh/id_ed25519私钥和id_ed25519.pub公钥。然后复制公钥到服务器ssh-copy-id -i ~/.ssh/id_ed25519.pub user192.168.10.128如果ssh-copy-id不可用手动复制到服务器也行cat ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh编辑SSH客户端配置文件vim ~/.ssh/config终端登录快速配置如下Host kylinsec HostName 192.168.10.128 User yourname Port 22 IdentityFile ~/.ssh/id_ed25519这样执行ssh kylinsec就能直接登录。注意私钥文件权限必须是600如果宿主机的.ssh目录权限不是700SSH客户端直接报“bad permissions”错误这也是新手的常见坑。4.4 VSCode Remote-SSH远程开发配置日常测试调整纯终端可能不够直观很多人在Windows下用VSCode远程连接。安装“Remote - SSH”扩展后按F1输入Remote-SSH: Connect to Host选择上面配置的kylinsec即可。VSCode连接时经常会遇到一个扩展相关的报错此扩展在此工作区中被禁用因为其被定义为在远程扩展主机中运行这个提示的本质是lsp相关的扩展冲突或者扩展类型设置成了workspace级别需要基于远程主机安装。解决方法是在VSCode扩展面板搜索该扩展点击“在SSH: kylinsec中安装”而不是本地安装。如果已经本地装了远程连接时VSCode会自动提示“在远程安装”点确认即可。还有一个高频报错是无法打开xxx: 找不到文件此时需要检查远程主机的默认工作目录。VSCode默认打开/root或用户家目录如果SSH登录用户权限不够切换用户后目录路径就变了。可以修改VSCode设置里的remote.SSH.path参数指定服务端的ssh路径或者干脆在~/.ssh/config中加一行RemoteCommand cd /home/user/project bash -l。4.5 SSH连接失败的典型排障路径我把实际遇到的SSH连接问题整理成速查表方便你们对照排查现象可能原因排查命令解决方式连接超时防火墙拦截、IP错误ping 192.168.10.128检查防火墙状态确认IP是否变化连接被拒绝sshd未启动systemctl status sshd启动sshd并设置开机自启密码正确但连不上密码认证被禁用检查PasswordAuthentication临时改为yes或用密钥登录登录后卡顿DNS反查检查UseDNS配置改为no并重启sshd提示host key警告系统重装后密钥变化ssh-keygen -R 192.168.10.128清除known_hosts中的旧记录权限错误家目录或authorized_keys权限不对ls -la ~按上文设置700/600权限最后再说一个只有真实环境跑过才会遇到的场景VMware虚拟机在NAT模式下宿主机重启后VMnet8的IP段可能发生变化这时候你在.ssh/config里写的固定IP就废了。解决方案是要么把VMware的NAT网段固定下来在VMware的虚拟网络编辑器中取消DHCP自动分配手动指定一个子网段要么直接在虚拟机里改用桥接模式让虚拟机从路由器获取和宿主机同网段的IP。我个人日常测试用NAT加固定网段省心。5. 远程桌面等其他实用配置说明如果你不满足于SSH命令行想要图形界面远程操作。麒麟信安默认安装的桌面环境支持VNC协议可以直接配置yum install -y tigervnc-server vncserver :1 -geometry 1920x1080然后把VNC端口5901加入防火墙白名单。Windows下用VNC Viewer连接192.168.10.128:5901即可。不过VNC性能和安全性都不咋地仅推荐局域网内测试用。如果你在配置过程中遇到yum源报错、内核模块加载失败这类问题多半是镜像源版本不匹配或者SELinux拦了模块。解决思路是查看/var/log/messages和/var/log/yum.log这两个日志是最直接的定位线索。别一上来就百度报错信息把日志翻到出错时间点的上下文仔细看一遍百分之七十的问题答案就在日志里。在实际项目中我最深的体会是麒麟信安这类国产系统并不是不能折腾而是它的报错习惯和社区版Linux不太一样。很多报错信息给出的不是直接原因而是连锁反应的结果。遇到问题不要慌顺着日志往下查先确认网络通不通再确认端口通不通然后看SELinux和防火墙状态最后再看服务自身日志。这个顺序能解决绝大部分问题。