通知发送不适用于 SSH

notify-send doesn't work over SSH

我想使用 PC A 通过 SSH 向 PC B 发送通知,但是我没有看到通知B.

ssh user_name@B_ip 'notify-send hello'

我也试过这个:在 B 上使用 SSH 登录 A 然后登录 B 返回然后发送通知。但是它仍然没有用。也没看到B上的通知

您必须设置 DISPLAY 变量

DISPLAY=:0.0 notify-send hello

有关此变量的一些信息,请参阅 this

通知通过 dbus(用户会话)发送。您需要通过 SSH 建立 dbus 套接字隧道,以便另一台计算机上的程序 运行 可以将通知发送到您的桌面。

工作流程是:

  1. 将 dbus 套接字公开到本地 TCP 端口(仅适用于本地主机)
  2. 在远程计算机上反向隧道此本地 TCP 端口(使用 SSH)
  3. 在远程机器上,将此 TCP 端口公开为抽象套接字
  4. 告诉notify-send要连接哪个dbus会话(创建的抽象套接字)

@local 代表您的桌面,@remote 代表您通过 ssh 访问的机器。

  1. 转发本地端口:7272到dbus抽象套接字(后面会用到guid)
@local $ echo $DBUS_SESSION_BUS_ADDRESS
unix:abstract=/tmp/dbus-pH1JnDeLNA,guid=5fe0907d81e722390f1ce02d6033ad76
@local $ socat TCP-LISTEN:7272,reuseaddr,fork ABSTRACT-CONNECT:/tmp/dbus-pH1JnDeLNA
  1. 从远程主机还原转发端口 7272(替换 $REMOTE_HOSTNAME)
@local $ ssh -R localhost:7272:localhost:7272 $REMOTE_HOSTNAME
  1. 将抽象套接字转发到 localhost:7272
@remote $ socat ABSTRACT-LISTEN:/tmp/custom_dbus_name,fork TCP:localhost:7272
  1. 启动通知发送
@remote $ export DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/custom_dbus_name,guid=5fe0907d81e722390f1ce02d6033ad76'
@remote $ notify-send "Hello, World"