Мои настройки странные, и я не могу изменить их сейчас. У меня есть две машины:
local-machine: это мой рабочий стол с Ubuntu и Gnomeremote-machine: это одна виртуальная машина, на которой также работает Ubuntu, но без X
На обеих машинах у меня есть свои закрытые и открытые ключи SSH.
Мне нужно запустить SSH с remote-machine на local-machine и запустить gedit (на local-machine , по умолчанию $ DISPLAY), но открыть файл на remote-machine через SFTP. Что-то вроде этого:
myuser@remote-machine:~$ ssh local-machine "DISPLAY=:0.0 gedit sftp://remote-machine/some/file"
Команда выше не работает. Gedit показывает это сообщение:
Could not open the file sftp://remote-machine/some/file.
gedit cannot handle sftp: locations.
Обратите внимание, что:
/some/fileсуществует наremote-machine.- Я могу без проблем использовать SSH с 
remote-machineнаlocal-machineиспользуя мой ключ SSH! - Я могу запустить команду 
DISPLAY=:0.0 gedit sftp://remote-machine/some/fileв терминале наlocal-machineи gedit без проблем открывает файл наremote-machine- но на терминале, в котором я выполнил команду работает в режиме DISPLAY:0 (действительно, этоgnome-terminal). - Я также пробовал опцию 
-tклиента SSH (для принудительного выделения псевдо-tty), но это не сработало. - Если я попытаюсь запустить 
DISPLAY=:0.0 gedit sftp://remote-machine/some/fileнаlocal-machineно под tty (например, вtty1, нажав<Ctrl>+<Alt>+<F1>), то он не работает - я получаю ту же ошибку при запуске сremote-machine. 
Я обнаружил, что если я передаю переменную окружения DBUS_SESSION_BUS_ADDRESS с правильным значением, это работает! Итак, если я сделаю что-то подобное:
myuser@local-machine:~$ env | grep DBUS_SESSION_BUS_ADDRESS > env.txt
myuser@local-machine:~$ scp env.txt remote-machine:
а потом:
myuser@remote-machine:~$ ssh local-machine "DISPLAY=:0.0 $(cat env.txt) gedit sftp://remote-machine/some/file"
оно работает! Проблема в том, что я не на local-machine поэтому я не могу получить правильное значение для этой переменной env. Есть ли другой способ сделать эту работу?
