ssh使用记录
SSH X11转发使用指南
Section titled “SSH X11转发使用指南”# 服务器端配置(远程主机)# 编辑SSH配置文件sudo nano /etc/ssh/sshd_config
# 确保以下参数设置为yes(取消注释并修改)X11Forwarding yesX11DisplayOffset 10# 开启这个配置就只能通过localhost连接, 其他IP连接会失败X11UseLocalhost no# 这个看情况是否需要配置AddressFamily inet # 强制使用IPv4(避免IPv6冲突)
# 重启SSH服务使配置生效sudo systemctl restart sshd# 客户端连接(本地计算机)# 基础命令(-X:安全模式,-Y:信任模式)ssh -Y username@远程服务器IP
# 示例:连接名为"server"的主机ssh -Y alice@192.168.1.100# 连接成功后,直接在远程终端输入图形程序名称即可:# 测试命令(需服务器安装x11-apps)xclock # 显示简单时钟窗口(验证X11是否正常工作)xeyes # 显示跟随鼠标的眼睛动画gedit # 启动文本编辑器firefox # 运行浏览器(远程渲染,本地显示)# 必备条件与故障排查# 服务器端依赖# 安装X11相关工具( Ubuntu/Debian )sudo apt install xauth x11-apps
# 高级技巧# 压缩传输:慢网络环境下启用压缩(-C参数):ssh -YC username@远程IP # -Y信任模式 + -C压缩# 多窗口管理:结合screen或tmux保持程序后台运行,断开SSH后重连仍可恢复窗口。# Mac客户端配置(关键步骤)# 1. 安装XQuartz(Mac必备X服务器)brew install --cask xquartz
# 2. 启动XQuartz并配置open -a XQuartz# 在XQuartz偏好设置→安全性中勾选"允许从网络客户端的连接"
# 3. 重启终端后重新连接ssh -Y pdd.intranet.company
# 4. 验证DISPLAY变量echo $DISPLAY # 应显示类似 localhost:10.0# Firefox打不开窗口的问题# 方式一: 允许Snap访问X11(推荐)# 给Firefox snap添加X11权限sudo snap connect firefox:x11
# 然后重新启动Firefoxfirefox
# 方式二: 使用非Snap Firefox# 先停止当前的snap firefoxsudo snap remove firefox
# 安装deb版本的firefoxsudo apt updatesudo apt install firefox
# 测试firefox
# 方法3:临时绕过Snap限制# 使用--no-sandbox参数启动firefox --no-sandbox
# 或者设置环境变量export MOZ_DISABLE_CONTENT_SANDBOX=1firefox
# 方法4:使用其他浏览器测试# 安装并测试Chromiumsudo apt install chromium-browserchromium-browser# chromium-browser打不开窗口的问题# 修复缺失的共享库# 安装X11基础依赖库(覆盖libpxbackend相关组件)sudo apt update && sudo apt install -y \ libx11-dev libxext-dev libxrender-dev \ libxtst-dev libxi-dev libxrandr-dev \ libgl1-mesa-glx libglu1-mesa
# 检查库文件是否存在sudo find /usr/lib -name "libpxbackend*"
# 为Chromium添加X11权限sudo snap connect chromium:x11
# 验证权限是否生效snap interfaces | grep chromium:x11
# 方法5:检查DISPLAY和XAUTHORITY变量echo $DISPLAY $XAUTHORITYexport DISPLAY=localhost:10.0chromium-browser --no-sandbox --disable-setuid-sandbox
# 方法6:完全绕过Snap限制# 方法A:安装Firefox ESR(非Snap)sudo apt updatesudo apt install firefox-esr
firefox-esr
# 方法B:安装Chromium deb版本sudo apt install chromium-browser
# 方法C:安装其他轻量级浏览器sudo apt install epiphany-browser # GNOME Websudo apt install midori
# 完全绕过Snap限制# 临时禁用Snap安全特性sudo snap set core experimental.xdg-desktop-portal=false
# 或者使用--no-sandboxchromium-browser --no-sandbox --disable-setuid-sandbox
sudo apt install libgtk-3-0 # 确保GTK库完整# 移除 Snap 版 Firefox:sudo snap remove firefox# 添加 Mozilla 官方 PPA 源:sudo add-apt-repository ppa:mozillateam/ppa# 设置优先级(防止系统自动装回 Snap): 执行以下命令创建一个配置文件:echo 'Package: *Pin: release o=LP-PPA-mozillateamPin-Priority: 1001' | sudo tee /etc/apt/preferences.d/mozilla-firefox# 安装原生 Firefox:sudo apt updatesudo apt install firefox
# 使用独立模式启动 (推荐)firefox --no-remote --new-instance# 或者,如果还是报错,可以尝试指定一个新的 Profile:firefox -P# 重启 Firefox 确保 Profile 生效sudo killall -9 firefoxfirefox --no-remote
# 创建新配置文件firefox -CreateProfile "newprofile"
# 使用新配置文件启动firefox -P "newprofile"# 赋予 Snap 特权权限(不一定成功)sudo snap refresh firefox --channel=stable/pkg-testing# 注意:即便如此,Snap 在处理 X11 转发路径(如 /tmp/.X11-unix)时依然经常出错。# 处理OpenGL/图形警告(可选)# 安装OpenGL和Mesa图形库sudo apt updatesudo apt install -y mesa-utils libgl1-mesa-dri libglx-mesa0
# 验证图形配置(非必需,仅用于确认)glxinfo | grep "direct rendering" # 输出"direct rendering: Yes"表示正常# 安装原生 Google Chrome (非 Snap 版)wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.debsudo apt install ./google-chrome-stable_current_amd64.debgoogle-chrome --no-sandbox# 强制新实例: (这会给 Chrome 指定一个临时文件夹存放数据,避开所有权限冲突。)google-chrome --user-data-dir=/tmp/chrome-remote --no-sandbox# --disable-gpu: 在远程 SSH 环境下,禁用硬件加速能大幅提高稳定性,减少闪退。google-chrome --no-sandbox --user-data-dir=/tmp/chrome_test --disable-gpu# 方法4:使用VNC# 启动VNC服务器vncserver :1 -geometry 1920x1080 -depth 24
# 从Mac连接open vnc://master1:5901