ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CentOS7纯命令行安装向日葵远程桌面完整指南

CentOS7纯命令行安装向日葵远程桌面完整指南 1. 为什么要在CentOS7上装向日葵使用场景与选型思考先说一个挺常见的场景你手头有一台CentOS7服务器放在机房或者公司角落平时只能靠SSH登录维护。可一旦遇到需要图形化界面的操作——比如查看某个Java程序的GUI日志、配置图形化的数据库管理工具、或者帮同事远程演示一个桌面上的故障——光靠SSH就很挣扎。这种时候装一个向日葵远程桌面就很省心。我选择向日葵而不是其他远程工具主要看中三点一是它在国内环境下连接速度稳定不需要额外折腾网络配置二是手机App、Windows、Mac、Linux全覆盖出门在外用手机也能连回办公室的CentOS7三是安装包对CentOS7有现成的RPM支持确实能做到“纯命令行安装”。很多人第一次接触Linux远程桌面第一反应是装VNC或者XRDP但VNC要做隧道转发、防火墙配置XRDP在CentOS7上还得编译安装对新手不太友好。向日葵这类商业化远程软件把这些复杂度都藏在后台了我们只要把客户端装上、服务跑起来就行。这篇内容主要写给两类人一类是刚接触Linux服务器、插座上都还没有图形桌面的新手想知道命令行到底怎么把这个软件装好另一类是已经装了桌面环境、但习惯ssh操作、不想为了装个软件切来切去的运维老手。不管你属于哪一类下面这套“纯命令行安装”的流程都值得先存下来。2. 安装前的准备工作系统检查与依赖处理2.1 确认CentOS7版本与内核架构开始安装之前先花30秒确认系统的版本和架构。向日葵官方RPM包分x86_64和aarch64两种装错架构是启动不了服务的。执行cat /etc/centos-release uname -a正常情况下会看到CentOS Linux release 7.x.xxxx和x86_64之类的输出。如果是CentOS 8或者CentOS Stream命令大体类似但包管理器和依赖策略会有点区别标题里写的是CentOS7下面的步骤都以CentOS7为准。另外确认一下自己当前登录用户最好用root操作或者具备sudo权限避免安装到一半因为权限不足卡住。还需要确认网络能访问外网。向日葵的识别码和设备认证需要连到官方服务器所以至少保证curl -I https://www.oray.com有正常响应。如果服务器处于内网隔离环境只允许访问内网仓库那就得提前下载RPM包再拷进去这部分我在后面“离线安装”小节单独讲。2.2 配置yum源与安装基础依赖CentOS7自带的base源和epel源基本覆盖了向日葵需要的运行库建议先把yum源刷新一遍sudo yum clean all sudo yum makecache向日葵客户端依赖的图形库在最小化安装时经常缺席最常见的就是libX11、libXext、libXinerama、libXtst这四件套。有些瘦身自制的CentOS7镜像连glibc都动过手脚先统一补上sudo yum install -y wget xorg-x11-fonts-utils libX11.x86_64 libXext.x86_64 libXinerama.x86_64 libXtst.x86_64 glib2 gtk3注意这些包名称在CentOS7的不同小版本里略有差异如果yum install提示某个包找不到用yum list available | grep 包名先查一下全名不需要照抄我的命令。很多时候只装libXtst就够跑起服务了但为了后续远程画面正常图形库尽量装全。2.3 无桌面的CentOS7先装图形环境这个点特别容易被忽略。向日葵的本质是远程桌面它需要把远端主机的桌面画面采集并编码传输。如果你的CentOS7当初选的是“最小化安装”连图形桌面都没有那向日葵装上也没有画面可传手机和电脑连过来会只看到黑屏或者直接断连。先检查当前是否已经装了桌面systemctl get-default输出multi-user.target就代表默认是纯命令行模式。如果确实需要远程看到桌面就得先补上GNOME桌面环境sudo yum groupinstall -y GNOME Desktop sudo systemctl set-default graphical.target sudo reboot如果你只打算把向日葵当做远程运维通道不关心图形桌面那可以先跳过这一步装好客户端让服务跑起来再说。但因为向日葵的设计更偏“桌面远程控制”我还是建议至少装一个轻量桌面比如Xfce或GNOME后续使用体验会好很多。3. 纯命令行安装向日葵的完整流程3.1 获取官方RPM包先强调一点不要再去找第三方压缩包或者从某个博客里下别人打包好的文件容易中毒不说版本还可能是旧的。向日葵Linux版官方下载地址是对外开放的直接到官网找“Linux版”对应的RPM。因为下载链接里的版本号经常更新所以用固定链接反而不稳妥推荐的做法是先到官网确认当前最新版本号或者在服务器上直接执行sudo yum install -y wget wget https://down.oray.com/sunlogin/linux/SunloginClient-xxx.x.x.xxxxx-amd64.rpm其中xxx.x.x.xxxxx就是你在官网页面上看到的实际版本号。我安装的时候官网出的是SunloginClient-15.2.0.63064-amd64.rpm但你可能看到更新的版本这都无所谓用哪个版本就装哪个。如果服务器无法直接访问官网你可以在自己的电脑上把RPM包下载好然后通过scp传到服务器scp SunloginClient-xxx.x.x.xxxxx-amd64.rpm root你的服务器IP:/root/这个方式虽然在传输这一步不是纯命令行但在服务器端仍然没有打开任何图形界面我觉得也算符合“纯命令行”的实用场景。3.2 执行RPM安装与依赖自动补位获得RPM文件后直接执行sudo rpm -ivh SunloginClient-*.rpm如果运气好依赖全部满足几秒钟就会提示安装成功。但大部分CentOS7服务器在执行这步时都会冒出一串error: Failed dependencies:的提示比如libXtst.so.6()(64bit) is needed。这种错误很常见不用慌按照错误提示里的库名用yum补装就行sudo yum install -y libXtst然后再重新执行一次rpm安装。更省事的做法是直接用yum来装本地RPM包yum会自动处理依赖sudo yum localinstall -y SunloginClient-*.rpmyum localinstall会把本地RPM当作安装源并从配置好的yum仓库中解析依赖比rpm -ivh再手动补依赖省心很多。如果是离线环境没有yum仓库那就只能通过光盘镜像自带的rpm包或者本地目录方式处理依赖了这部分后文会细说。3.3 启动向日葵服务并设置开机自启向日葵安装完成后并不是立刻在后台运行的。我看到不少人装完就急着用手机连结果提示设备离线就是因为服务还没起来。使用systemd来管理sudo systemctl restart sunloginclient.service sudo systemctl status sunloginclient.service状态里如果看到active (running)说明服务已经正常拉起。让它开机自动启动也顺手做了sudo systemctl enable sunloginclient.service这里要注意不同版本的向日葵service名称可能不同有的版本叫sunloginclient有的版本叫runsunloginclient。装完先执行systemctl list-unit-files | grep -i sunlogin看看实际生成了哪个service文件再用对应的名字操作避免报错。3.4 验证安装结果与登录准备服务启动后可以通过下面的命令确认进程是否存在ps -ef | grep sunlogin一般情况下你会看到若干条/usr/local/sunlogin/bin/sunloginclient ...的进程。如果服务正常识别码和验证码就有了来源。识别码通常显示在向日葵客户端的图形界面上如果你在服务器端没有图形桌面可以通过同一账号登录手机App后在设备列表里看到这台主机——前提是安装后没有改设备绑定方式。第一步验证一定是看服务状态和进程只有这两样正常后面远程连接才靠谱。4. 命令行环境下的配置与实用技巧4.1 设置固定验证码与安全选项向日葵默认的验证码是随机变化的每次远程连接前都要去服务器端看一次验证码如果人不在服务器旁边就会非常被动。常规做法是在向日葵客户端图形界面里设置一个“固定验证码”但你既然习惯了命令行也可以通过修改配置文件实现不过不同版本的配置项位置不一样。最直接的建议是在服务器上启动向日葵图形客户端登录账号然后在“安全设置”里设置固定验证码。如果服务器没有桌面就先在SSH里面手动启动一下GUI程序试试/usr/local/sunlogin/bin/sunloginclient这行命令在无桌面环境下会报错提示缺少DISPLAY环境变量这是正常的。有桌面环境的话程序窗口会弹出来。设固定验证码主要是为了防止每次连接都要查随机码实际使用中能省很多事。4.2 通过systemd日志快速判断问题向日葵安装后不工作的原因有很多最有效的排查方式就是看日志。systemd会捕获服务的标准输出和标准错误sudo journalctl -u sunloginclient.service -e -n 50日志里如果出现cannot open display多半是图形环境没装好或者是DISPLAY变量没有指向正确的X server。如果出现network error或timeout大概率是服务器出口网络受限向日葵连不上官方服务器。日志是最诚实的别自己瞎猜。4.3 防火墙与SELinux的处理建议CentOS7默认开启了firewalld和SELinux这两个东西经常成为“服务启动成功但连不上”的元凶。向日葵官方文档没有强制要求关闭SELinux或防火墙因为它的连接走的是服务器中转和P2P客户端主动出网通常不需要入站端口。但是某些内网策略严格的环境出站也被限制端口至少要放行TCP/UDP的HTTPS(443)和向日葵使用的端口范围。如果你懒得细究端口可以临时关闭firewalld做一次连通性测试sudo systemctl stop firewalld假设这样就能连上再逐步放行端口而不是最终关闭防火墙。至于SELinux建议先用getenforce查看状态如果已经是Enforcing先加放行规则试试而不是直接setenforce 0。改成Permissive会有安全隐患对于公网服务器尤其要慎重。4.4 离线安装场景的完整做法有一类场景经常发生生产环境的CentOS7物理隔离无法访问外网但又必须要装向日葵。这时候提前在一个同版本、能联网的CentOS7机器上把RPM和所有依赖打包好拷进内网装。操作思路是先在一台联网机器上执行yumdownloader把向日葵和依赖全部下载到本地目录sudo yum install -y yum-utils sudo yumdownloader --resolve --destdir/tmp/sunlogin SunloginClient-*.rpm然后把/tmp/sunlogin目录整个拷贝到内网机器执行sudo rpm -Uvh /tmp/sunlogin/*.rpm这种方式尽量避免手工一个一个rpm装因为依赖顺序没搞对会非常崩溃。rpm -Uvh能一次性安装当前目录下所有rpm包虽然系统会自动跳过已装的但顺序错了仍可能报错。如果遇到报错用rpm -ivh --nodeps强行装会留隐患不建议在生产上这么干。5. 常见问题与排查实录5.1 问题一rpm安装时报依赖缺失这是我遇到最多的问题也是最容易解决的。错误提示通常长这样error: Failed dependencies: libXtst.so.6()(64bit) is needed by SunloginClient-15.2.0.63064-amd64直接用yum装对应名称的包sudo yum install -y libXtst装完再执行rpm安装。如果报libXinerama.so.1缺失就装libXinerama报libX11就装libX11。实在不知道包名可以yum whatprovides */libXtst.so.6查一下哪个包提供了这个文件。一般情况下装完下面这一串就够覆盖99%的场景sudo yum install -y libX11 libXext libXinerama libXtst glib2 gtk2 atk cairo5.2 问题二服务启动后马上退出服务状态显示active但过了两秒钟再查就已经自动退出这种情况多半是运行库版本对不上或者缺少某个.so文件。解决办法是先查看日志sudo journalctl -u sunloginclient.service -e -n 100日志会提示到底是libgtk-x11-2.0.so.0找不到还是其他库找不到。找到了就按名字补装。另外向日葵客户端有一些历史版本限制内核线程调度策略某些容器化环境或者自定义内核的CentOS7也会崩溃这类情况只能升级向日葵版本或换标准内核。5.3 问题三手机App显示设备离线设备离线第一反应是看本机服务systemctl status sunloginclient ps -ef | grep sunlogin如果服务正常再检查服务器时间。向日葵设备认证对时间很敏感系统时间和真实时间相差超过一分钟离线状态基本跑不掉。执行date -R如果时间不对先配置NTPsudo timedatectl set-ntp true sudo timedatectl status date -R其次是确认服务器能访问外网。向日葵要连接官方的调度服务器和转发服务器如果你的服务器只放行了内网端口或者出站防火墙拦了443以外的端口也会导致客户端在线状态异常。测试方法很简单curl -I https://www.oray.com只要能正常返回HTTP响应网络就没问题。5.4 问题四远程连上后画面黑屏或操作卡顿黑屏一般不是向日葵的问题而是目标主机没有图形会话。向日葵基于X11或Wayland采集画面CentOS7默认X11如果图形服务没启动自然采不到画面。确认是否已经进入图形化模式systemctl get-default输出graphical.target才是开机进桌面。如果你不想重启也可以先用startx手动拉起一个X会话但这样远程开机后还是大概率进不到图形界面建议直接设置默认图形模式然后重启。至于操作卡顿大多是网络原因向日葵会自动选择P2P或中转线路很多情况下卡顿是因为目标机器主机的上传带宽不够。不要指望在只有2MBps上传的宽带上流畅操作远程桌面这是物理限制。5.5 问题五如何彻底卸载并重装万一装错了版本或者服务一直起不来卸载重装是最简单的方案。CentOS7下卸载命令sudo rpm -e SunloginClient如果提示有依赖可以用rpm -e --nodeps SunloginClient但这不是推荐做法。卸载之后清理残留目录sudo rm -rf /usr/local/sunlogin sudo rm -rf /etc/sunlogin sudo systemctl disable sunloginclient.service 2/dev/null然后重新下载、重新安装。千万别忘了用rpm -qa | grep -i sunlogin确认包名有些版本的包名是sunloginclient全小写rpm -e SunloginClient会报 not installed这时换成rpm -e sunloginclient即可。6. 维护与长期使用心得6.1 定期更新客户端版本向日葵客户端会不定期更新修复漏洞和兼容性问题。命令行安装的更新流程很简单下载新版RPM然后执行sudo rpm -Uvh SunloginClient-新版本-amd64.rpmrpm -Uvh会保留服务配置自动覆盖安装。更新完成后强制重启服务sudo systemctl restart sunloginclient.service我的习惯是每季度检查一次官网版本不要等到真正出问题再折腾。远程桌面这种工具平时无感关键时候连不上是真的会耽误事。6.2 多用户场景下的连接策略如果你有多个运维同事要共用这台CentOS7建议指定一个公共账号来绑定设备避免各人用各人的手机号绑来绑去。向日葵客户端原生支持设备绑定可以用一台手机账号绑定设备后再在设置里把“允许任何向日葵账号访问”关掉只给指定的几个账号授予权限。你如果不设置默认的访问方式可能只接受本机识别码验证码这种模式不适合多人协作。设置这些内容也需要在图形客户端里操作但日常维护时还是以命令行为主可以说是很典型的“安装靠命令行配置靠图形界面”的组合。6.3 结合systemd定时检查的小技巧因为服务偶尔会自己挂掉又不能每时每刻盯着我习惯加一个systemd timer或者crontab来做健康检查。比如每分钟检测一次主进程若进程不在就重新拉起sudo crontab -e加入以下内容* * * * * pgrep -f sunloginclient /dev/null || systemctl restart sunloginclient.service这个脚本虽然简单但非常实用。尤其在内网环境里向日葵进程因为网络波动出现异常退出下一分钟就能自动恢复不需要人工介入。日志会记录重启次数第二天再去看journal排查根因也不迟。6.4 为什么我推荐保留图形桌面的最小化习惯很多人为了“纯净”就把CentOS7装成纯命令行然后用的时候发现远程桌面软件没画面又来找解决办法。我的个人建议是如果你主要用途是运维可以继续保留纯命令行远程用SSH就够了。但如果你就是为了远程桌面控制那还是老老实实装一个GNOME或者Xfce并用systemctl set-default graphical.target开机进入图形模式。一个服务器装GUI并不会产生多少性能负担现代机器完全不差那点内存。向日葵不是终极工具它只是把远程桌面的使用门槛大大降低了但前提是你得给它一个能工作的桌面环境。安装这件事说难确实不难一条rpm命令就装完了说坑也确实多依赖、服务、防火墙、SELinux、网络外网一环绕一环。我每次给新服务器装向日葵都会先跑一遍systemctl status和journalctl看日志确认服务稳定了再交出去。最后分享一个小技巧装完以后一定要先重启一次机器再验证一次开机自启和远程连接因为很多服务启动时正常重启后反而不行。这种“重启打回原形”的问题在远程桌面软件上格外常见。把这步做了后面能省掉大半天的回头排查。
返回列表