원래 머신에서 SSH를 통해 명령을 실행합니다.

원래 머신에서 SSH를 통해 명령을 실행합니다.

nostromo데비안 테스트에서 대화형 계피 데스크톱을 실행하는 로컬 컴퓨터가 있습니다 . 그 위에 gnome-terminal이 실행 중이고 SSH 터미널이 원격 시스템에 열려 있습니다 sulaco. 마치 로컬 터미널에서 실행한 것처럼 작동하도록 ssh 터미널에서 명령을 실행하고 싶습니다. 예를 들어:

mooseboys@nostromo:~$ ssh sulaco
mooseboys@sulaco:~$ run-on-ssh-origin xeyes

run-on-ssh-origin위의 코드가 주어지면 결국 로컬 기존 데스크톱 환경 내에서 실행되는 것과 유사한 것을 찾고 있습니다 xeyes. 즉, 다른 로컬 gnome 터미널에서 실행하는 것과 같습니다.

내가 아는 유일한 해결책은 sshSSH 터미널에서 다른 명령을 실행하는 것입니다.nostromosulaco

mooseboys@sulaco:~$ ssh nostromo xeyes

이는 GUI가 아닌 명령에는 작동하지만 X 응용 프로그램의 경우 기존 대화형 데스크탑에 창을 생성하지 않는 것 같습니다. 데스크탑을 열거하고 실행할 명령을 삽입하는 방법이 있다고 확신하지만 더 간단하고 강력한 방법을 찾고 있습니다. 이상적으로는 이와 같은 것이 run-on-ssh-origin존재하지만 그렇지 않은 경우 예를 들어 SSH를 통해 실행되는 GUI 응용 프로그램이 기존 대화형 데스크탑이 있는 경우 이를 사용해야 함을 지정하는 방법이 있습니까?

답변1

GUI가 아닌 명령이 실행되는 이유는 해당 명령을 터미널 체인(nostromo->sulaco->nostromo)에서 실행하기 때문입니다.

X11 응용 프로그램이 이런 방식으로 작동하려면 모든 클라이언트와 서버에서 X11 전달을 활성화하기만 하면 됩니다. 노스트로모가 여기 웨이터예요. 그런 다음 X11 출력을 server2에서 server1, 클라이언트로 효과적으로 전달할 수 있습니다. 이는 기술적으로 가능하지만 이 정확한 구성에서는 약간의 성능 저하와 약간의 낭비가 될 수 있습니다.

그러나 ssh 명령에서 디스플레이 환경 변수를 간단히 변경할 수 있습니다.

ssh nostromo 'DISPLAY=:0; xeyes'

이는 X11 출력을 로컬 디스플레이로 리디렉션하는데 :0, 이는 귀하가 소유하거나 사용하지 않을 수도 있고 사용 권한이 있을 수도 있습니다. 이는 견적 요구 사항에 따라 어떤 종류의 명령을 보낼 수 있는지에도 직접적인 영향을 미칩니다.

고객의 지역 디스플레이 번호를 알아야 합니다. 단일 사용자의 경우 이는 일반적으로 입니다 :0. 그러나 상황은 다를 수 있습니다.

관련 정보