Мои настройки странные, и я не могу изменить их сейчас. У меня есть две машины:
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. Есть ли другой способ сделать эту работу?