设置 DISPLAY=:0 对通过 ssh 发送通知无效

设置 DISPLAY=:0 对通过 ssh 发送通知无效

我可以通过 ssh 访问我室友的电脑(Ubuntu 14.04)。我想通过 ssh 给她发一条消息,因此我使用这个命令

export DISPLAY=:0 && notify-send "sample message"

命令以 0 退出,但她看不到任何消息。另一方面,当我使用导出显示=:0例如终端,xterm 正常打开。 通知库已安装,当我运行时通知发送在本地,它会显示。此外,当我在另一台计算机上通过 ssh 尝试此命令时,它也能正常工作。

大家有什么想法吗?为什么会发生这种情况?谢谢

答案1

通知发送需要有会话凭证才能在您的朋友会话中发送通知。这些凭证存储在您登录时包含在会话中的环境变量中,这可防止恶意后台进程弄乱您的桌面。

使这些会话凭据可用(并完全破坏桌面的安全性)的简单方法是让桌面会话启动屏幕会话然后将其置于后台。

然后,您可以通过 ssh 连接到它,连接到屏幕会话,然后您的通知发送将起作用。如果您这样做,请确保您的室友完全知道您完全有权访问她的桌面和文件。

要配置屏幕会话:

从仪表板运行“启动应用程序”

单击添加,为其命名并在命令中输入以下命令:

screen -dmS desktop_session

然后当你通过 ssh 连接时

screen -r desktop_session
notify-send "Insecure message"

然后您可以运行任何命令并让其图形输出出现在该桌面会话中。

您将需要以交互方式执行此操作,如果您想以非交互方式执行此操作,您可以使用 shell 脚本轮询一个文件,当它有数据时将其发送到通知。或者只是使用即时消息客户端。

答案2

我必须做类似的事情 - 我在一台计算机上运行更新,但想在另一台计算机上发送通知。我使用了sshpass

sshpass -p user_password ssh -X user_name@ip_address DISPLAY=:0 notify-send "The message"

其中,您需要替换user_passworduser_nameip_address针对您的特定用户/机器。

相关内容