如何为 SSH 设置持久显示设置?

如何为 SSH 设置持久显示设置?

我正在使用 SSH 从 Windows PC 远程访问 Linux 计算机。我现在正在执行以下步骤:

  1. C:Windows\system32> ssh username@remote-ip

    (由于我已经设置了密钥类型身份验证,所以不需要密码。)

  2. username@remote-ip:~ export DISPLAY=local-ip:10.0

  3. username@remote-ip:~ firefox #例子

一切运行良好。

但是每次我使用 SSH 时,都必须执行步骤 2。

我可以将该参数添加到某些配置文件(sshd 配置文件或 SSH 配置文件或 ssh 参数)中,以便我不必一直输入该参数吗?

我应该在哪里进行更改:在远程 PC(Linux)还是本地 PC(Windows)上?

答案1

一个可能的解决方案是通过服务器端 shell 的启动脚本执行此操作。

根据 shell 的不同,当 SSH 服务器以交互式 shell 启动时,它可能会或可能不会提供某些脚本。对于 Bash,脚本为~/.bashrc

我假设服务器端的 shell 确实会获取一些脚本。如果我是你,我会在那里定义变量。首先,我会检查是否涉及 SSH,然后如果$DISPLAY扩展为空字符串(如果由于 而已经设置ssh -X),那么我会设置它。代码可能是:

[ -n "$SSH_CONNECTION" ] && [ -z "$DISPLAY" ] && export DISPLAY=local-ip:10.0

$SSH_CONNECTION这是另一个答案

请注意,在某些情况下,启动脚本可能会提前返回。例如这个答案,转折 3。请注意,链接的答案是关于非交互式 shell 的,而您的答案为ssh username@remote-ip您提供了一个交互式 shell;但一般来说,启动脚本可能包含一些允许它出于某种原因提前返回的逻辑。它也可能已经包含DISPLAY=…。如果有,则将上述代码插入末尾可能是错误的return。如果有,则将上述代码插入开头可能是错误的DISPLAY=…。通常,您需要了解启动脚本的逻辑并将上述代码插入正确的位置。如有疑问,请插入开头并查看是否有效。

答案2

您需要将它们添加到 shell 的启动脚本中。假设您的 shell 是 bash,您需要将其添加export DISPLAY=local-ip:10.0~/.bashrc~/.bash_login。在本例中,可能是后者。

但是,如果它接受,您可以尝试使用-Xssh 选项。在某些情况下,它会在远程为您设置显示。这为多个用户和多个 ssh 会话提供了支持。

演示:

$ ssh lima
$ echo $DISPLAY

$ exit
logout
Connection to lima closed.
$ ssh -X lima
$ echo $DISPLAY
localhost:10.0

如果我从家庭会话登录而其他人登录则...

$ ssh -X lima
$ echo $DISPLAY
localhost:11.0

相关内容