Ссылка, которую вы разместили, предоставляет то, что вам нужно.
Xming - это X-сервер, работающий в Windows, поэтому он может принимать выходные данные графических приложений, а не локальный X-сервер на самом сервере.
Когда вы выполняете ssh -X hostname
или используете putty из Windows и включаете переадресацию X в опциях SSH, установленный сеанс ssh создает "туннель" между сервером и машиной Windows, через который он передает графический вывод из любых процессов. которые запускаются в этом сеансе SSH.
После подключения к серверу вы должны увидеть, что переменная DISPLAY
указывает на себя, но на другой порт:
$ echo $DISPLAY
localhost:10.0
10
здесь соответствует tcp порту 6010 (обычно), который мы можем увидеть с помощью netstat:
$ sudo netstat -pan | grep 6010
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 6031/0
Это показывает нам локального прослушивателя на порту 6010, который принадлежит процессу 6031 в этом случае:
$ ps auwx | grep 6031
user 6031 0.0 0.1 9340 1960 ? S 21:57 0:00 sshd: user@pts/0
И мы можем видеть, что это принадлежит терминалу pts, созданному сессией ssh. Это всего лишь фон, но он говорит о том, что любая графика будет отправлена на порт, созданный сеансом ssh и перенаправленный по туннелю обратно на вызывающую машину. Это окно Windows, и оно работает под управлением Xming, поэтому примет графическую сессию и отобразит ее локально.
Обратите внимание, что это просто графический вывод. Процесс все еще выполняется на сервере, и все его взаимодействия с сервером - это просто выходные данные этого процесса, которые перенаправляются по туннелю.
Поэтому, если вы затем запустите Firefox из командной строки, его вывод будет отображен на компьютере с Windows.
Так что да, когда вы делаете файловый диалог в Firefox, это с точки зрения сервера, а не машины Windows. Таким образом, любые загрузки, которые вы хотите сделать, будут из хранилища файлов сервера.
Этот способ устраняет все издержки среды рабочего стола и просто запускает приложение.