SSH를 사용하여 액세스하는 헤드리스 가상 머신(Ubuntu Server 17.04 실행)이 있습니다. 나는 X11 전달의 기본 사항을 잘 알고 있으며 xterm과 친구들을 잘 전달할 수 있습니다. XFCE 터미널도 OK를 전달합니다.
Gnome Terminal을 사용하고 싶은데 시작되지 않는 것 같습니다. 대신 잠시 동안 멈추고 결국 오류가 발생합니다.
Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: Timeout was reached
흥미롭게도 내 VM에서 로컬 데스크톱 세션을 실행하면(startx를 통해 시작됨) gnome-terminal은 X11을 통해 원격으로 작동합니다.
일종의 Gnome 서비스가 실행되어야 할 것 같은데, 그것이 무엇인지, 전체 데스크톱 세션의 컨텍스트 밖에서 서비스를 시작하는 방법을 알 수 없습니다. 가상 머신은 기본적으로 헤드리스이기 때문에 일반적으로 시작하지 않습니다.
내 가상 머신에서 로컬로 GUI 데스크탑 세션을 시작하지 않고도 Gnome Terminal이 원격으로 작동하도록 하려면 어떻게 해야 하는지 아는 사람이 있습니까?
답변1
이것은 작동하지 않습니다. 왜냐하면 gnome-terminal
(다른 것과 마찬가지로gnome-thing
)는 dbus에 연결을 시도하지만 응답을 받지 못한 채 오랜 시간 후에 실패합니다.
가장 간단한 해결책은 세션에 대한 dbus 인스턴스를 시작하는 것입니다.
export $(dbus-launch)
gnome-terminal
시작하면웨이랜드회의 시간:외딴처음 실행했기 때문에 export $(dbus-launch)
다시 실행해야 합니다. 그렇지 않으면 gnome-terminal
전달된 모니터의 X11 인스턴스 대신 Wayland 인스턴스가 원격 모니터에서 시작됩니다.gnome-terminal
이 경우 또 다른 해결 방법은 X11을 명시적으로 실행하는 것입니다. X11 gnome-terminal-server
은 X11을 사용하는 마지막 창이 닫힌 후 종료됩니다. 예:
#! /bin/bash
ID=foo.bar$RANDOM
GDK_BACKEND=x11 /usr/libexec/gnome-terminal-server --app-id "$ID" &
sleep .4 # yuck
gnome-terminal --app-id "$ID"
wait
답변2
이 작업은 바닐라 Ubuntu 또는 Debian에서 다음 명령을 사용하여 수행할 수 있습니다.
ssh -X user@host dbus-launch gnome-terminal
내 메모에는 몇 가지 공통 기호 가 있습니다 dbus-launch
.--exit-with-x11
--exit-with-session
남은 문제는 로딩하는 데 시간이 걸린다는 것입니다.
gnome-terminal
제가 보기에는 로컬 대 원격 대화 인 것 같습니다 gnome-terminal-server
. 코드를 가져와서 수정해야 하지만 꽤 단순한 소프트웨어이고 너무 단순합니다.
편집: 또한 x11-dbus
패키지 없이도 이 작업을 수행할 수 있습니다(우분투에서는 매우 작지만 기본적으로 사용할 수 없습니다).
이것은 모든 버전에서 작동하지 않지만 gnome-terminal
Ubuntu 22 및 Debian 11에서 테스트한 결과 작동합니다.
ssh -X user@host gnome-terminal --disable-factory
터미널 명령의 스타일/길이 외에도 이러한 방법에는 차이점이 있습니다.
초기 방법은 원격 컴퓨터와 상호 작용하는 방식으로 인해 인스턴스를 dbus-launch
시작합니다 .gnome-terminal
gnome-terminal-server
그러나 이 방법을 사용하면 Ubuntu 22 도크 등과 원활하게 작동하는 인스턴스가 --disable-factory
시작됩니다 .gnome-terminal
이 두 가지 옵션 중 하나가 귀하의 요구 사항을 충족하기를 바랍니다. 다른 방법도 있지만 제 생각에는 이 방법이 너무 간단하기 때문에 가장 좋습니다.
답변3
단일 세션에서 X11을 전달하는 간단한 경우는 다음을 참조하세요. https://askubuntu.com/a/1279065/463121
로그인 후:
$ dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY
그러면 gnome-terminal이 빠르고 X11을 통해 전달될 수 있습니다.
오류가 발생하기 시작하면 개인 dbus 데몬이 중단되었을 수 있습니다. 모든 사용자 프로세스를 종료하고 다시 로그인할 수 있다면 문제가 없을 것입니다.
편집: 또는 심지어:
$ dbus-update-activation-environment --all
답변4
X를 통해 응용 프로그램을 시작하는 것은 매우 느릴 수 있습니다.
저는 SSH를 통해 전 세계 클라이언트 시스템에 VNC 터널을 설정하는 데 많은 성공을 거두었습니다.
원격 컴퓨터에 VNC 서버(예: TigerVNC)를 설치하고 데몬을 시작합니다. (yum install -y Tigervnc-server ; vncserver :3 - 또는 사용하려는 포트). 비밀번호를 설정하라는 메시지가 표시됩니다.
로컬 컴퓨터에 VNC 클라이언트를 설치합니다(yum install -y Tigervnc). ~/.vnc/xstartup 파일에 "exec /usr/bin/gnome-terminal"을 추가할 수 있습니다. 그런 다음 다음을 실행합니다: ssh -L 5903:localhost:5903 -N -f -l user remote-server-IP-or-hostname 여기서 포트 번호는 59이고 원하는 포트 번호가 됩니다.
다른 터미널에서 실행: vncviewer :3
서버에 설정된 비밀번호를 묻는 메시지가 표시됩니다.