Моя локальная машина — Linux Mint, а удаленная — Centos 7. Я пытаюсь открыть gnome-terminal на удаленной машине с помощью x-forwarding, но это не работает.
Когда я подключаюсь к хосту в интерактивном режиме
$ ssh -Y centos-host
Затем в открытом сеансе я могу запустить gnome-terminal и x-forwarding работает
$ gnome-terminal
$ netstat -nltp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN -
Однако когда я пытаюсь бежать
$ ssh -Y centos-host gnome-terminal
Окно с терминалом GNOME открылось, но туннель для X не создан.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
У меня есть еще одна удаленная машина linux mint, и я не испытывал такой проблемы с ней. Так что, я думаю, что-то не так с centos 7.
Пожалуйста, помогите.
Спасибо.
решение1
Причина в том, что gnome-terminal
он разветвляется в фоновом режиме. Если вы запустите его в интерактивном ssh
сеансе, вы заметите, что получаете новую командную строку, хотя терминал все еще открыт. В неинтерактивном случае, как только это произойдет, ssh
он подумает, что команда завершилась, и закроет сеанс, включая закрытие прослушивающего сокета X11 на сервере. Поскольку все еще есть активные соединения X11, ssh
он не выходит немедленно, поэтому онвыглядиткак будто сеанс все еще активен, однако новые соединения X11 не могут быть открыты.
Раньше вы могли сделать это с помощью gnome-terminal --disable-factory
, однако, к сожалению, в какой-то момент это было удалено gnome-terminal
. Теперь у вас есть два варианта:
- Используйте другую терминальную программу, которая не уходит в фоновый режим, например
xterm
- Сразу после запуска
gnome-terminal
, в том жеssh
сеансе выполните команду, которая не завершается, напримерssh -Y server 'gnome-terminal; echo Press enter to exit; read'
решение2
Конфигурация:
- CentOS Linux релиз 7.6.1810 (ядро)
/etc/ssh/sshd_config
содержит:
X11Forwarding yes
У меня работает следующая команда:
ssh -Y HOST bash -l -c gnome-terminal --display=${DISPLAY} < /dev/null > /dev/null 2>&1 &
Сообщенный gnome-terminal --disable-factory
мне --disable-factory
ответ больше не поддерживался.