AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 697379
Accepted
henriquehbr
henriquehbr
Asked: 2022-03-31 08:25:49 +0800 CST2022-03-31 08:25:49 +0800 CST 2022-03-31 08:25:49 +0800 CST

startx 不一致的行为

  • 772

我有一个 SSH 服务器,负责dwm通过 X 转发运行二进制文件,在我的客户端计算机上,我有一个 shell 脚本来替换上面的dwm二进制文件/usr/local/bin,在该脚本中,我只需调用服务器请求它运行原始文件dwm:

ssh -q -tt [email protected] dwm $@

只有一个-t,我得到以下错误:

Pseudo-terminal will not be allocated because stdin is not a terminal

在 SSH 服务器端,我正在使用ForceCommand通过container_runner脚本传递接收到的参数,它看起来像这样:

#!/bin/sh
/usr/local/bin/$SSH_ORIGINAL_COMMAND

这里的原因ForceCommand是为了限制运行除一组 Docker 容器初始化脚本(位于/usr/local/bin)之外的任何其他东西的可能性

这是其中一个脚本的示例,下面的一个运行dwmDocker 映像:

#!/bin/sh
docker run \
    --pull=never \
    --rm \
    -v container-scripts:/container-scripts \
    -v ssh-keys:/home/dwm/.ssh \
    -v x11-shared:/tmp/.X11-unix \
    -it \
    -e DISPLAY=:1 \
    -e XAUTHORITY=/tmp/.X11-unix/container-cookie \
    dwm \
    $@ 2>/dev/null
  • container-scripts- 包含一组脚本的卷,这些脚本将允许在容器内运行其他同级容器
  • ssh-keys- SSH 密钥,以便能够从其他容器中运行容器
  • x11-shared- X11 共享数据(X11 套接字和 xauth cookie)

我的ssh_config样子是这样的:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null
ForwardX11 yes
ForwardX11Trusted yes
PreferredAuthentications=publickey

在我禁用 SSH 多路复用后,事情开始变得不一致ssh_config,之前使用下面的设置,它一直工作正常(这没有任何意义,据我所知,SSH 多路复用不应该干扰),下面的设置:

ControlPath /tmp/%r@%h:%p
ControlMaster auto
ControlPersist yes

发生的情况是,每当我尝试运行将我的脚本startx作为参数传递时,我的dwm脚本向 SSH 服务器发出请求以运行实际的dwm,我只是得到一个黑屏,并且没有任何反应,它只是保持这样,例如下面的示例:

startx /usr/local/bin/dwm -- :1

但是,如果我运行上面相同的命令,稍有不同,使用 shell 命令替换和 shell noop 运算符,它工作正常(只需要dwm比平时多几秒钟,可能是由于丑陋的黑客)

: $(startx /usr/local/bin/dwm -- :1)
shell-script ssh
  • 1 1 个回答
  • 140 Views

1 个回答

  • Voted
  1. Best Answer
    henriquehbr
    2022-04-14T02:30:08+08:002022-04-14T02:30:08+08:00

    终于设法找到了解决方案,出于某种原因,问题在于我是:

    • 强制 TTY 分配,必须-tt从 SSH 客户端删除标志
    • 请求 Docker 分配一个伪 tty 并以交互模式运行,必须-it从 SSH 服务器端的 Docker CLI 中删除标志

    以上几点仅适用于图形应用程序,例如stand firefox,交互式容器,但不是图形(fishshell 和neovim)仍然需要上述两个标志,-tt在 SSH 客户端和-tDocker CLI 上

    • 0

相关问题

  • 在awk中的两行之间减去相同的列

  • 打印文件行及其长度的脚本[关闭]

  • 通过命令的标准输出以编程方式导出环境变量[重复]

  • 按分隔符拆分并连接字符串问题

  • MySQL Select with function IN () with bash array

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve