X Apps 원격 실행 미니 하우투(Remote X Apps mini-HOWTO)Vincent Zweije, zweije@xs4all.nl14 July 1998 이동규 ntierlogicprmer@gmail.com 1998년7월26일이 mini-HOWTO는 엑스 윈도우 응용프로그램을 원격으로 실행시키는 방법을 설명한다. 좀더 정확히 말하면, 엑스 윈도우 프로그램을 조작중인 컴퓨터밖에 다른 컴퓨터 display상에 실행시키는 방법에 대한 것이다. 혹은 거꾸로: 당신이 앉아있는 컴퓨터밖에 다른 컴퓨터에서 엑스 윈도우 프로그램이 실행되도록 하는 방법에 대한 것이다. 이 mini-HOWTO는 보안 부분에도 신경을 썼다. ---- CategoryKLDP ---- CategoryKLDP ---- CategoryKLDP ---- CategoryKLDP 1. 소개(Introduction)이 mini-HOWTO는 원격으로 조작 가능한 엑스 윈도우 응용프로그램을 어떻게 실행시키는가에 대한 안내서이다. 이 글은 몇 가지 이유로 쓰여졌다.
이 문서는 유닉스계열 시스템들을 염두에 두고 쓰여져왔다. 당신의 로컬 또는 로컬의 운영체제가 다른 성질의 것이라면, 어떻게 동작하는가를 당신이 찾아내야 될지도 모른다. 그러나, 당신의 독특한 시스템에 적용하기 위해서 예제들은 당신 자신이 다른 형식으로 바꾸어야 할 것이다. 이 문서의 최신 버전 대부분은 웹 http://www.xs4all.nl/~zweije/xauth.html 에서 항상 손에 넣을 수 있다. 역시 http://sunsite.unc.edu/LDP/HOWTO/mini/Remote-X-Apps에서도 Linux Remote X Apps mini-HOWTO로 손에 넣을 수 있다. Linux (mini-)HOWTO들은 sunsite.unc.edu로부터 http나 ftp를 이용해서 손에 넣을 수 있다. 이 글은 버전 0.5.1이다. 글을 쓰는데 수고비는 없었다, 단지 좋은 뜻만이 있었을
뿐이다. 나는 제안, 견해, 추가할 사항, 유익한 지적, (타자)교정 등을 받아들인다.
나는 이 글이 간단하고 읽기 쉬운 문서로 남아 있기를 바란다, 그래도, 가장
의미 있는 양식인 HOWTO 양식으로 남아 있기를 바란다. 잡담은 차례는 1998년 7월 14일에 Vincent Zweije가 마지막으로 갱신했다. 2. 참고 자료(Related Reading)웹에서 참고한 문서는 ``What to do when Tk says that your display is insecure'', http://ce-toolkit.crd.ge.com/tkxauth/이다. Kevin Kenny에 의해서 쓰여졌다. 이 문서에 엑스 윈도우 인증(Xauth)에 대한 부분과 유사한 해결책을 제안한다. 그러나, Kevin은 당신에게 Xauth을 설명할때 xdm을 이용하는 경우에 더 많이 중점을 둔다. O'Reilly and Associates로부터 출판된 X Window System Vol. 8 ``X Window System Administrator's Guide'' 또한 정보의 출처로써 나의 주의를 끌어왔다. 불행하게도, 나는 그것을 다 읽을 수 없는 상태에 있다. 다른 문서는, 당신이 지금 당장 읽으려면 http://ciac.llnl.gov/ciac/documents/ciac2316.html에서 구할 수 있는, ``Securing X Windows'' 란 제목의 문서를 무척 좋아한다.
3. 상황(The Scene)당신은 두 대의 컴퓨터를 사용하고 있는 중이다. 당신은 첫 번째 엑스 윈도우 시스템을 워드 작업과 워드 작업의 결과를 보기 위해 사용중이다. 두 번째 엑스 윈도우 시스템은 중요한 몇 가지 그래픽 작업을 위해 사용중이다. 당신은 첫 번째 엑스 윈도우 시스템 디스플레이상에 두번째 엑스 윈도우의 그래픽 작업의 출력이 보여지길 원한다. 엑스 윈도우 시스템은 이 행동을 가능하도록 해준다. 물론, 당신은 이 행동을 위한 네트워크 연결이 하나 필요하다. 택할만한 것으로; X protocol은 네트워크 대역을 아주 많이 사용한다. 그러나 약간 인내만 있으면 되도록 해주는 적절한 porotocol 압축이 있다. 심지어 당신은 모뎀을 통해서도 엑스 윈도우 응용프로그램들을 실행시킬 수 있다. X protocol 압축에 대해선, 당신이 dxpc http://ccwf.cc.utexas.edu/~zvonler/dxpc/나 LBX http://www.ultranet.com/~pauld/faqs/LBX-HOWTO.html를 살펴보기 바랄지도 모르겠다 ( LBX mini-HOWTO로도 잘 알려져있다.) 당신은 이 행동하기 위해 두 가지 일을 해야 한다:
4. 약간의 논의(A Little Theory)
한 개의 디스플레이는 한가지 이름으로 표시한다, 예를 들면:
DISPLAY는 호스트 이름 ( 만약 당신이 별도로
5. 클라이언트 일려주기(Telling the Client)클라이언트 프로그램(예를 들어, 당신의 그래픽 응용프로그램)은 환경변수
우리의 컴퓨터는 외부에서 light로 식별하고, 도메인 uni.verse 상에 있다. 우리가
보통의 엑스 서버를 실행중이라면, 디스플레이는 당신은 이미 원격 컴퓨터 당신이 원격 컴퓨터에서 csh을 실행중이라면:
또는 대신에:
당신이 원격 컴퓨터에서 sh을 실행중이라면:
또는 대신에:
또는 당연히:
telnet의 어떤 버젼은 자동으로 원격 호스트 같이 전달되도록 하는 개념을 당신은 다음의 작업들을 수행할 수 있는 약간의
스크립트 작성으로 구현이 가능하다: telnet접속을 하기전에, 6. 서버 일려주기(Telling the Server)서버는 아무 곳으로부터 접속을 허락하진 않을 것이다. 당신은 당신의 스크린에 아무나 윈도우를 열 수 있는 것을 원하지 않는다. 혹은 당신이 타이프한 것을 아무나 읽을 수 있는 것을 원하지 않는다. -- 당신의 키보드는 당신 디스플레이의 일부임을 기억하라! 소수의 사람들은 지나치게 디스플레이에 억세스를 허락하는 것을 보안 위험성을 높이는 것으로 재 정의하는 것같다. 당신의 디스플레이에 억세스 중인 누군가가 당신의 스크린들에 읽고 쓰기와, 당신이 누른 키 읽기와, 당신의 마우스 동작 읽기를 할 수는 있다. 대부분의 서버들은 서버에 연결을 인증하는 방법 두 가지를 알고 있다. host list mechanism (xhost)과 magic cookie mechanism (xauth)이 그것이다. 그 다음으로는 ssh(the secure shell)이 있는데 엑스 윈도우 연결을 향상시킬 수 있다. 6.1 XhostXhost는 호스트 이름에 근거를 두고 엑세스를 허락한다. 서버는 서버에 연결을 허락한 호스트 목록을 유지한다. 역시 호스트 확인을 완전히 불가능하게 할 수도 있다. 주의하라: 이것은 확인을 전혀 하지 않게 됨을 의미한다. 그래서 모든 호스트가 연결이 가능할 것이다! 당신은 xhost 프로그램으로 서버의 호스트 목록을 관리할 수 있다. 이전의 예에서 이 기법(mechanism)을 이용하기 위해서는, 이렇게 하라:
이것은 호스트
당신은 호스트 확인을 아래 명령으로 불가능하게 할 수 있다:
이것은 호스트 억세스 확인을 불가능하게 하여 누구에게나 연결을 허락한다. 모든 이용자를 당신이 신뢰할 수 없는 네트워크(인터넷 같은)상에선 결코 이 명령을 내려선 안된다. 당신이 아래 명령으로 호스트 확인을 다시 가능하게 할 수 있다:
xhost - 그 자체는 억세스 리스트로부터 모든 호스트들을 제거하지 않는다 (모두 제거하는 명령은 별로 쓸모 없을 것이다 - 당신은 어느 곳으로부터도 연결할 수 없을 것이다, 심지어 당신의 로컬 호스트로부터도 연결할 수 없을 것이다). Xhost는 대단히 위태로운 방법이다. 원격 호스트에 여러 사용자들 관에 구분을 하지 않는다. 역시, 호스트 이름(실제 주소)은 눈속임을 당할 수 있다. 이것이 당신이 신뢰할 수 없는 네트워크 (예를 들어 인터넷에 이미 전화선을 이용한 PPP 억세스를 한 상태)상에 있다면 바람직하지 않다. 6.2 XauthXauth는 올바른 열쇠를 아는 사람에게 억세스를 허락한다. 열쇠는 authorization record나 magic cookie로 불리는 것 따위이다. 이 인가 방법는 정식으로 MIT-MAGIC-COOKIE-1라 불린다. 여러 개의 디스플레이에 대한 쿠키들은 한 세션이 시작함과 동시에, 서버는 서버는 클라이언트에게 몹시 분주하게 요구하는 쿠키를 결코 생성할 수 없다.
그렇지만 쿠키들은 서버 내부에 무사히 보존된다; 클라이언트가 서버에 쿠키들을
덮어쓰지 않는다면 쿠키들은
당신이 관심을 가지고 있을지 모르는 앞선 묘안을 X11R6.3에 추가했다. 새로운 ``보안'' 확장에 의하여, 엑스 서버 자체가 몹시 분주하게 새로운 쿠키를 생성시키고 되돌릴 수 있다. 더군다나, 쿠키들은 ``신뢰할 수 없다''고 지적될 수 있어서 그러한 쿠키들로 연결을 한 응용프로그램은 실행 중에 제지될 수 있다. 예를 들어, 신뢰할 수 없는 것들은 키보드/마우스 입력이나 윈도우 콘텐츠를 여러 신뢰성 있는 클라이언트들로부터 손에 넣을 수 없을 것이다. 안심하기 어렵다면, 웬만한 실력으로도 사용 가능한 새로운 ``생성'' 하부명령이 있다. xauth는 xhost 사용상에서 명백한 보안상 이점을 가진다. 당신은 특정한 컴퓨터 상에 특정한 사용자로부터의 억세스를 제한할 수 있다. xauth는 xhost처럼 주소를 속이는 일에 고생하지 않는다. 그리고 당신이 원한다면, xauth가 연결을 허락한 다음에 xhost를 계속 사용할 수 있다. 쿠키 생성하기(Making the Cookie)xauth를 사용하기 원한다면, 당신은 X server를
Mcookie는 리눅스-유틸 패키지(주요 사이트는
ftp://ftp.math.uio.no/pub/linux/)
속에 아주 작은 프로그램이다. 택할만한 것으로, 당신은 임의의 무작위
데이타(예를들어,
당신이 startx 스크립트를 (root가 아니라서) 편집할 수 없다면, startx를 정확히
설정하기 위해 시스템 관리자 권한을 얻거나, 대신에 관리자가 xdm을 설정하게
하라. 관리자가 할 수 없었거나 하려고 하지 않는다면, 당신은
당신이 당신의 X 세션을 관리하는 xdm을 사용한다면, 당신은 xauth를 쉽게 사용할
수 있다. /etc/X11/xdm/xdm-config 에 DisplayManager.authDir 자원을
정의하라. Xdm은 X server가 시작할 때 X server에 -auth 옵션을 넘길 것이다.
당신이 이때 xdm에서 로그인을 했다면, xdm은 당신을 위해 당신의 ~/.Xauthority 에 쿠키를 붙인다. 더 많은 정보를 얻으려면 xdm(1)
맨페이지를 보기 바란다. 예를 들면, 나의 /etc/X11/xdm/xdm-config 은
내부에 다음 행들을 가지고 있다:
쿠키 전달하기(Transporting the Cookie)이제 막 당신은 서버 호스트 당신의 홈 디렉토리가 밤낮으로 공유되어 있으면 가장 쉬운 경우이다.
홈 디렉토리가 공유되어있지 않다면, 당신은 rsh(the remote shell)로 쿠키를 전달할 수 있다:
rsh가 당신을 위해 동작하지 않고 있는 경우도 있을 수 있다. rsh은 게다가, 보안상 약점(내 기억이 옳다면, 호스트 이름을 거짓으로 대답하는데 속을 수 있다)도 가지고 있다. 당신이 rsh를 사용할 수 없거나 바라지 않는다면, 당신은 다음과 같이 쿠키를 수동으로도 전달할 수 있다:
더 많은 정보를 얻으려면 역시 rsh(1)와 xauth(1x)의 맨페이지를 보기 바란다. 당신이 원격 호스트에 telnet 접속을 할 때 쿠키 사용하기(Using the Cookie)dark.matt.er상에, xfig같은 뛰어난, X 응용프로그램은 저절로 자신을 인증받기
위한 쿠키를 그 컴퓨터에 6.3 SshAuthority record들은 암호화하지 않고 발송한다. 당신이 누군가가 당신의 연결을 엿보는 것을 걱정 해보았다면, ssh(the secure shell)을 사용하라. 암호화된 연결 상에서 X protocol 연결을 향상시킬 것이다. 게다가, 그 외에 좋은 점도 있다. 그 외에 좋은 점으로는 당신의 시스템에 좋은 구조상의 개선이 있다. 그냥 http://www.cs.hut.fi/ssh/, ssh 홈페이지를 방문해 보라. 인증 방법이나 암호화 X 연결에 관해서 여기에 언급한 것 외에 다른 것이 있겠는가? 아마 커버로스 (Kerberos) 프로토콜 밖에 없을 것이다. 7. 문제 해결(Troubleshooting)처음으로 여러분이 원격 엑스 윈도우 응용프로그램 실행을 시도했을 때, 대개는 응용프로그램이 실행되지 않는다. 여기에 약간의 흔한 에러 메시지들과 그것들의 원인, 의도대로 되도록 당신을 도울 수 있는 해결책이 있다.
에러 101은 ``네트워크가 접근할 수 없다''는 상황이다. 응용프로그램은 서버에
네트워크 연결을 하지 못했다. 당신이
에러 111은 ``연결이 거절''된 상황이다. 당신이 연결을 시도한 서버 컴퓨터에 접근 할 수는 있지만, 지적한 엑스 서버가 거기에 존재하지 않는다. 당신이 올바른 서버 이름과 디스플레이 순번을 사용했는지 살펴보아라.
클라이언트는 서버에 연결할 수 있었지만, 서버는 클라이언트가 서버를 사용하는 것을 허락하진 않았다 (인증받지 못했다). 당신은 클라이언트에 올바른 magic cookie를 전달하고, 쿠키가 만기가 안되도록 확실히 하라 (서버는 새로운 세션을 시작하면 새로운 쿠키를 사용한다). |
You have a strong desire for a home and your family interests come first. |