Моя локальная машина - 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 что-то не так.
Пожалуйста помоги.
Спасибо.
Причина в том, что 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'
Конфигурация:
/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
больше не поддерживалось.