IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 通过X11远程显示和Verysync实现两台*NIX设备间的轻松协作 -> 正文阅读

[系统运维]通过X11远程显示和Verysync实现两台*NIX设备间的轻松协作

前言

由于个人日用FreeBSD,但.NET Core和OpenWrt等的开发则必须在Linux上进行。因此在内网设置一个不带显示器的Linux设备,并将配置过程以此记录。

配置 X11 远程显示

????????因为 X11 基于Socket,因此在本机显示远程的X程序是可能的。

????????(以下配置仅Xorg可用)

????????测试X11 TCP监听的工作状况

????????????????只要执行以下内容即可启动一个监听了TCP的X客户端:

xinit /usr/bin/xterm -- -listen tcp # Linux
xinit /usr/local/bin/xterm -- -listen tcp # FreeBSD

??????????????? (需要注意的是,FreeBSD默认安装包和配置都在/usr/local/而不是/,因此以下涉及到文件存在于不同位置的配置都以第一行为Linux,第二行为FreeBSD)

????????????????按下Ctrl-Alt-Fx组合按键,你将看见空白屏幕中有一个xterm。在xterm中运行以下命令以获取你的DISPLAY环境变量:

echo $DISPLAY

????????????????那么我们假设你的输出是:1

????????????????在xterm中运行xterm&,再次启动一个终端,使用ssh登录到你的远程机上,并运行以下命令来查看是否启用了访问控制:

DISPLAY=freebsd:1.0 xhost

????????????????(此处假设你的主机名或ip地址为freebsd,以下相同。在xhost 前添加DISPLAY 的目的是省去设置环境变量)

????????????????假如你的输出类似于以下两种:

access control enabled, only authorized clients can connect
INET:garuda.lan
access control disabled, clients can connect from any host

????????????????那么可以不用继续测试。否则,请遵循以下步骤:

????????????????在本地xterm中运行

xhost + garuda # 请把garuda替换成你的ip地址
xhost + # 完全取消访问控制,仅如果你确定能访问PC上X服务器的只有你自己

????????????????再次在ssh中运行

DISPLAY=freebsd:1.0 xhost

????????????????如果输出正常,那么你的X服务访问已经被允许,可以试着运行一个软件了:

DISPLAY=freebsd:1.0 xterm

????????配置默认启用X11 TCP监听

???????????????由于显示管理器各不相同,因此启用的方法也各不相同。

????????????????GNOME桌面 / GDM

??????????????????????? 转载自Xorg服务开启tcp/ip监听,允许其它机器客户端连接,未在FreeBSD上测试

??????????????????????? 编辑/usr/share/gdm/gdm.schemas:

<schema>
  <key>security/DisallowTCP</key>
  <signature>b</signature>
  <default>true</default>
</schema>

??????????????????????? 将default标签内的true改成false即可。

???????

??????????????? KDE Plasma / SDDM

??????????????????????? 编辑 /etc/sddm.conf (在FreeBSD上,是 /usr/local/etc/sddm.conf),添加:

[XDisplay]
ServerArguments=-listen tcp

?????????????????Lightdm

??????????????????????? 转载自X Window的奥秘,未在FreeBSD上测试

??????????????????????? 运行以下命令以生成Lightdm配置文件:

gzip -cdk /usr/share/doc/lightdm/lightdm.conf.gz | sudo tee -a /etc/lightdm/lightdm.conf

??????????????????????? 然后编辑/etc/lightdm/lightdm.conf,在末尾添加

xserver-allow-tcp=true

?????????配置自动授权远程主机

??????????????????????? 仅适用于具有静态IP的网络。如果你在使用DHCP或对此不确定,请断开并重新连接网络并查看断开前后ip是否变化。没有变化则适用于此脚本。

??????????????????????? 编辑以下文件,保存到~/.local/bin或任何你看不见的地方:

#!/bin/bash
# FreeBSD用户应该将上面的/bin/bash改成/usr/local/bin/bash
if   xhost | grep garuda  ; then
        exit 0
else
        xhost + garuda
fi

??????????????????????? 本文假设远程机的主机名/IP地址是garuda,请按你的实际状况替换garuda。

??????????????????????? 将它添加到你的Shell先行执行文件中,例如.zshrc.bashrc 或是.profile 中:

bash ~/.local/bin/configure_xhost.sh

??????????????????????? 此处假设你将此脚本添加到了~/.local/bin并命名为configure_xhost.sh

??????? 配置远程机自动使用本地机的DISPLAY环境变量

??????????????????????? 在远程机的~/.ssh/rc 上添加以下:

export DISPLAY="freebsd:0.0"

??????????????????????? (如果不起作用,那么请添加到默认Shell的先行执行文件rc中)

??????

??????? 大功告成!现在试着在ssh中运行一个GUI程序,它应该出现在你本地的桌面上。

效果图:在运行着Plasma的FreeBSD上显示来自Garuda Linux的xfce4-about软件

?配置Verysync

??????? Verysync 微力同步是一个优秀的文件同步方案,使用它传输文件将会很方便。

??????? Linux上

??????????????? 首先进入微力同步官网 - 私有云盘 企业文件同步 团队文件共享协助工具下载一个适用的二进制包

??????????????? 因为现在Linux大多使用systemd,使用Verysync官方的安装脚本看起来很方便:

curl http://www.verysync.com/shell/verysync-linux-installer/go-installer.sh > go-installer.sh 
chmod +x go-installer.sh
sudo ./go-installer.sh -l $(pwd)/verysync.tar.gz
rm go-installer.sh

??????????????? 此处认定你将Verysync二进制包放在当前目录下并命名为verysync.tar.gz

??????????????? 然后启用systemd的开机自启:

sudo systemctl enable verysync

??????????????? 最后启动服务:

sudo systemctl start verysync

??????? FreeBSD上

??????????????? 进入微力同步官网 - 私有云盘 企业文件同步 团队文件共享协助工具下载一个适用的二进制包,并解压:

cd
tar -xf Downloads/verysync.tar.gz
mv verysync* verysync

??????????????? 此处认定你下载到了~/Downloads/verysync.tar.gz,并希望解压到~/verysync

??????????????? 在~/.local/bin 编写一个自动启动脚本:

echo "#!/bin/sh
/home/tienyu/verysync/verysync serve --no-browser --no-restart &" >> ~/.local/bin/verysync.sh
chmod +x ~/.local/bin/verysync.sh

??????????????? 并添加到你桌面环境的自动执行上:

???????? 大功告成!现在,分别在两台机器上打开一个浏览器,配置Verysync吧!

后记

??????? 之所以不用虚拟机而是选择两个物理机协同是出于性能的无奈之举,实际上虚拟机NAT模式因为是从localhost连接所以不用xhost配置,这对我来说也是耗时很长的一项。但实际上经过一点摸索便写成了此文。此文是以FreeBSD用户的立场写的,因此不可能直接搬到Linux上,若介绍得有失偏颇,请斧正。

问题

??????? 不知为何,fish和zsh似乎都不会读取ssh设置的环境变量。因此我在它们的rc文件中设置了DISPLAY。但若需在机器上直接接显示器,那么就会出现在终端中执行应用cannot open display的问题。

??????? 虽然在内网基本感受不到延迟,但UI若太复杂的话(比如wine中运行的某国产IM)还是会出现明显的延迟,影响到使用。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:39:26  更:2021-11-28 11:40:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:27:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码