How to remotely open gedit with SFTP URL in Gnome through SSH?

Posted by Álvaro Justen on Super User See other posts from Super User or by Álvaro Justen
Published on 2012-04-02T04:08:00Z Indexed on 2012/04/02 5:34 UTC
Read the original article Hit count: 579

Filed under:
|
|
|

My setup is weird and I can't change it now. I have two machines:

  • local-machine: it's my desktop running Ubuntu with Gnome
  • remote-machine: it's one virtual machine, also running Ubuntu but without X

In both machines I have my private and public SSH keys.

I need to run SSH from remote-machine to local-machine and run gedit (in local-machine, under the default $DISPLAY) but openning a file in remote-machine throught SFTP. Something like this:

myuser@remote-machine:~$ ssh local-machine "DISPLAY=:0.0 gedit sftp://remote-machine/some/file"

The command above doesn't work. gedit shows this message:

Could not open the file sftp://remote-machine/some/file.
gedit cannot handle sftp: locations.

Note that:

  • /some/file exists on remote-machine.
  • I can SSH normally from remote-machine to local-machine using my SSH key without any problems!
  • I can run the command DISPLAY=:0.0 gedit sftp://remote-machine/some/file in a terminal on local-machine and gedit opens the file on remote-machine without any problems - but the terminal in which I executed the command is running in DISPLAY :0 (really, it's gnome-terminal).
  • I also tried -t option of SSH client (to force pseudo-tty allocation) but it didn't work.
  • If I try to run DISPLAY=:0.0 gedit sftp://remote-machine/some/file in local-machine but under a tty (for example in tty1, by pressing <Ctrl>+<Alt>+<F1>) it doesn't not work - I get the same error when running from remote-machine.

I found that if I pass the environment variable DBUS_SESSION_BUS_ADDRESS with a correct value, it works! So, if I do something like that:

myuser@local-machine:~$ env | grep DBUS_SESSION_BUS_ADDRESS > env.txt
myuser@local-machine:~$ scp env.txt remote-machine:

and then:

myuser@remote-machine:~$ ssh local-machine "DISPLAY=:0.0 $(cat env.txt) gedit sftp://remote-machine/some/file"

it works! The problem is that I'm not on local-machine so I can't get the correct value for this env variable. Is there any other way to make this work?

© Super User or respective owner

Related posts about linux

Related posts about ssh