https://gabriel.ladish.org/ Introduction ============ Gabriel is a small utility to enable D-Bus clients to connect to a D-Bus daemon running on a remote machine, through SSH. In simple words, gabriel is a proxy for a dbus daemon running on a remote machine. Installing Gabriel ====================== (0) To build Gabriel, you need to have libssh (>= 0.2) [1] and glib (> 2.10) installed. (1) Type: ./configure (2) make (3) make install Usage Notes ============= Gabriel is composed of one binary named, gabriel. Following is it's usage: gabriel [OPTION...] - Gabriel Help Options: -?, --help Show help options Application Options: -h, --host=HOSTNAME Hostname or IP of the remote host -u, --username=USERNAME Username on the remote host -p, --password=PASSWORD Password on the remote host -b, --bind=HOSTNAME The address to listen for DBus client connections on -d, --bus-address=BUS_ADDRESS The bus address of the remote D-Bus daemon -t, --port=PORT The TCP port to listen for DBus client connections on Upon successful launch, gabriel will inform you about the D-Bus Bus address you need to use for your D-Bus clients. If you launch gabriel without any arguments, it will try to get the address of the remote bus from the DBUS_SESSION_BUS_ADDRESS environment variable, connect to the localhost, bind TCP socket it listens on to the localhost at port 1337. The output from gabriel on successful launch in this case would be: Listening to D-Bus clients on: "tcp:host=localhost,port=1337" Now to make your D-Bus clients connect to it, you either pass this as an argument to dbus_connection_open() in the client's code or simply set the environment variable DBUS_SESSION_BUS_ADDRESS like this: DBUS_SESSION_BUS_ADDRESS="tcp:host=localhost,port=1337" your_dbus_client Tada! Your dbus client is manipulating objects on a remote machine over a secure channel. Notes ===== You need socat (> 1.5.0.0) installed and an ssh server running on the remote machine on which the dbus-daemon is running. Known Issues ================ * Only one client can connect at one time. I already have a fix for this but unfortunately it doesn't work since libssh is not thread-safe. However the developer has promised to make things better in this respect in the next release. * The dbus-daemon on the remote machine should be launched by the same user account as used by gabriel to authenticate to that machine. Foot Notes ============ [1] http://www.0xbadc0de.be/libssh:libssh