  HOW TO RUN REMOTE X APPLICATIONS
  Vincent Zweije, zweije@xs4all.nl
  15 November 1997
  Tetsu Isaji, isaji@mxu.meshnet.or.jp
  1 Feb 1998

  ̕XAvP[V[gŋN@AݒAZL
  eBɂĉĂ܂B
  ______________________________________________________________________

  ڎ

  1. Cg_NV
  2. z肷
  3. Ƃ_
  4. NCAgɎw肷
  5. T[oɎw肷AT[o̐ݒ
     5.1 Xhost
     5.2 Xauth
        5.2.1 NbL[
        5.2.2 NbL[̓]
        5.2.3 NbL[g
     5.3 ssh

  6. guV[eBO

  ______________________________________________________________________

  1.  Cg_NV

  XAvP[V[gŎg߂̃KChłBœ_̓ZL
  eB̎ɂĂĂ܂Bȉ̗R炱̃hLg܂
  B

  1. uXAvP[V[głǂ̂悤ɎgHvƂ
     usenetőB

  2. Xڑ(X connections)ׂ"xhost +hostname" "xhost +"g
     ߂̃qg(S)Bxhost̓ZLeB悭Ȃ̂ŁAɂ
     @B

  3. IvVɂċLqhLgmȂ̂łƑ
     ̏񂪂Βzweije@xs4all.nl܂ŋĉB

  ̃hLgUNIXCNȃVXeΏۂɏĂ܂B[J
  邢̓[gIy[eBOVXełƋÂg
  ȂǁA̕łǂ̂悤ɓ삳邩킩܂BȉƂď
  Ƃ͊ẽVXeɍ킹ĕύXĉB

  TkufBXvCSł͂܂vƕ\邳Aׂ
  ƂɂWWWɊ֘AhLg܂(<http://ce-
  toolkit.crd.ge.com/tkxauth/>)B Kevin Kennyɂďꂽ̂
  B̃hLg(xauth)łXF؂ɂĂ̕Ɠ悤ȉ
  @Ă܂BKevinxdmgxauthƂړI
  Ă܂B

  O'Reilly X System Window System Vol. 8 Window System Administrator's
  Guide Ɗ֘A͂悢񌹂Ȃ̂Œӂ𕥂Ă܂A܂̕
  `FbNĂ܂B

  ̃hLg"Securing X Windows"Ƃ^CgłB
  <http://ciac.llnl.gov/ciac/documents/ciac2316.html> œł܂B
  ̓o[W0.3.1łBPӂɂJĂĖۏ؂łBāAA
  CfBAAǉA𗧂|C^A(łԈႢ)ȂǂWĂ
  B̓̕VvȕłA悢ӖHOWTO`ɂĂ܂B
  Ȃ /dev/null ɂł̂ĂĂB

  ̃hLg̍ŐVł <http://www.xs4all.nl/~zweije/xauth.html>
  œł܂B܂scomp.windows.xj[XO[vɓeĂ
  ܂B܂uRemote X Apps mini-HOWTOvƂ
  <http://sunsite.unc.edu/LDP/HOWTO/mini/Remote-X-Apps> œł܂B

  2.  z肷

  2̃Rs[^肻̂1ڂXEBhEVXegĂ
  B2ڂő؂ȃOtBbN̎dāA1ڂ̃fBXvC2
  ̏o͂\ƂP[Xl܂B

  lbg[NKvłBȂׂ̂łB XvgR
  lbg[NH邩łBłƉ䖝ΓKȃvg
  Rk(protocol compression)găfoRŃAvP[V
  s邱Ƃł܂BXvgRkɂĂ
  <http://ccwf.cc.utexas.edu/~zvonler/dxpc/> 
  <http://www.ultranet.com/~pauld/faqs/LBX-HOWTO.html> `FbNĉ
  ("LBX mini-HOWTOƂĒmĂ܂)B

  s߂ɈȉQ̂ƂĂ܂B

  1. [gRs[^̐ڑ̋A[JfBXvC (T[
     o)Ɏw肷B

  2. [gAvP[V(NCAg)ɁȀo͂[JfBX
     vCɕ\邱Ƃw肷B

  3.  Ƃ_

  }WbN[h(magic word)DISPLAYłBXEBhEVXeł̓fBX
  vC (P)L[{[hA}EXAXN[琬Ƃ
  BfBXvC̓T[ovO(XT[o)ɂĊǗ܂BT[
  óAT[oɐڑĂ鑼̃vOɑ΂"\ł鎑i"^
  ܂B

  fBXvC͖Oŕ\܂BႦ΁A

  o  DISPLAY=light.uni.verse:0

  o  DISPLAY=localhost:4

  o  DISPLAY=:0

     ƂłBfBXvC̓zXg(Ⴆ
     light.uni.verselocalhost)AR(:)A (0Ƃ4)琬
     BfBXvC̃zXgXT[oĂRs[^̖O
     BzXgȗƃ[JzXgw肳܂ (󒍁F:0,
     :1, 0.1 ȂǂƎw肵Ƃ̓[JzXgɂȂ܂)B͕
     0ł -- ̃Rs[^ɐڑꂽfBXvC
     ꍇ͂̐ς邱Ƃ܂

  fBXvC̎wɂ.nt܂B.n̓XN[ԍłBfBX
  vC͕̃XN[Ƃłʂ͂ЂƂ̃XN[ n =
  0Ƃ܂B

  4.  NCAgɎw肷

  NCAgvO(킩₷邽߂ɃOtBbNAvP[
  VƂ܂)DISPLAYϐ𒲂ׂĐڑfBXvCF
  BsƂɃNCAg̃R}hC-display hostname:0 I
  vVǉ邱ƂłłAݒύX邱Ƃł܂B
  ܂傤BRs[^lightAhCuni.verseƂ
  BʂXT[o𑖂点ĂȂAfBXvC
  light.uni.verse:0 ƂĎw肳܂B[gRs[
  ^(dark.matt.er)ɕ`c[xfigNă[J}Vlightɏo
  ͂\܂B

  [gRs[^cshgĂȂ

      dark% setenv DISPLAY light.uni.verse:0       #ϐ̐ݒ
      dark% xfig &

  Ƃ܂B

  邢́A

       dark% xfig -display light.uni.verse:0 &

  ƂĂłB

  sh̏ꍇ

       dark$ DISPLAY=light.uni.verse:0
       dark$ export DISPLAY
       dark$ xfig &

  ƂȂ܂Bl

       dark$ DISPLAY=light.uni.verse:0 xfig &

  Ă悢łA

       dark$ xfig -display light.uni.verse:0 &

  Ƃł܂B

  5.  T[oɎw肷AT[o̐ݒ

  T[o͂ǂłڑłƂ킯ł͂܂BNނƂȂ
  ̃fBXvCɃEBhE\ꂽ͂Ȃł傤H܂͂
  ̂ǂގAL[{[h̓fBXvC̈ꕔȂ̂ƂƂYȂ
  BfBXvCɃANZXłƂƂZLeBXN
  ƂƂ𗝉ĂЂƂ͂قƂǂ܂BfBXvC
  ɃANZXłĺAXN[ł̂ǂ񂾂菑ł̂
  B܂Ȃ̃L[Xg[N}EX̓ǂނƂĂłĂ
  ܂BقƂǂ̃T[oɂ͂Q̔Fؐڑ̕@܂B hostX
  g@\(xhost)ƃ}WbNNbL[(magic cookie)@\(xauth)łB
  ssh(secure shell)Xڑ]邱Ƃł܂B

  5.1.  Xhost

  XhosthostɂƂÂăANZXs܂BT[óAڑF߂
  host ̃XgǗ܂Bhost̃`FbNSɖɂ邱Ƃ
  ܂( ӁFɂƃ`FbNsȂȂ̂őSĂhostڑ
  łĂ܂܂I)B

  xhost vOgăT[ohostXgRg[邱Ƃł
  ܂B̗ł̋@\gɂ

       light$ xhost +dark.matt.er

  Ƃ܂Bdark.matt.er̐ڑSċ܂BXNCAg
  ڑEBhE\ꂽ炷ɃZLeBׂ̈ɐڑ
  ܂B

       light$ xhost -dark.matt.er

       light$ xhost +

  Ƃhost`FbN܂Bhost̃ANZX`FbN𖳌ɂ
  Nłڑł悤ɂĂ܂B[U[MpłȂꍇ(Ⴆ΃C
  ^[lbgɐڑĂꍇ)͂̂悤ȋ͌ĂȂł
  B

       light$ xhost -

  "xhost -"Ƃ邾ł̓ANZXXgSĂhost폜ł܂(
  ͂܂g܂BǂڑłA[JzXg
  ł܂)B xhost͂ƂĂȂdg݂łƌ܂B
  [gzXg̃[U[ʂłȂAhost(AhXl)U
  gƂłĂ܂܂B\Mpłlbg[NɐڑĂ
  Ȃ(PPPŃC^[lbgɐڑĂȂ)̂Ȃ炱͗ǂȂƂ
  B

  5.2.  Xauth

  Xauth͋@mĂ郆[U[ɃANZX̂łB̂悤
  ȋ@͔F؃R[h(authorization record)邢̓}WbNNbL[
  (magic cookie)ƌĂ΂܂BقȂfBXvCp̃NbL[
  ~/.XauthorityɗpӂĂ܂B ~/.Xauthority̓O[v[U[
  ё[U[ɂ̓ANZXłȂ悤ɂĂ܂(󒍁Fchown 600
  .XauthorityƂĂ܂)BZbVn߂ہAT[o̓NbL[
  -authŎw肵t@Cǂ݂܂B̌T[o͓NbL[
  fNCAg̐ڑ݂̂܂B~/.XauthoritỹNbL
  [ύXꂽAT[o͂̕ύXoƂ͂܂B

  ŋ߂̃T[o͂ɃNGXgNCAgp̃NbL[܂B
  NCAg~/.XauthorityɃNbL[ǉȂ ~/.Xauthority
  ͓܂񂪁ANbL[̓T[oɕۑ܂B David Wigginsɂ
  ƁF

  V@\ X11R6.3Œǉ܂BԂǎ҂ɂ邱Ƃ
  傤BVZLeBg@\ʂāAXT[o͂ɐVNb
  L[ĕԂ܂BɃNbL[́uMpȂv̂ɑ΂Ăw
  ł̂ŁANbL[̂悤ȐڑsAvP[V͂Ɋւ
  ݂̂ɐ܂BႦ΃L[{[h/}EX̓͂EBhEɕ\
  Ă邱ƂȂǂ𑼂̐MpłNCAgł݌邱
  Ƃ͂łȂȂ܂BxauthŏȂƂ̋@\g߂̐VTu
  R}h܂B

  xauthxhostɔׂăZLeBIɗDĂ܂B܂̃Rs[
  ^̓̃[UɃANZX𐧌邱Ƃł܂Bxhost̂悤
  ł߂ȃAhX̐ڑ͂ł܂BKvȂxautȟxhostɂ
  ڑł܂B

  5.2.1.  NbL[

  xauthĝł΁A-auth (F؃t@C)ɕtXT[
  oNKv܂BstartxXNvgĂꍇ͂
  Ă悢ł傤Bȉ̂悤ɂstartxXNvgɔF؃R[
  h(authorization record)ĉBurandomfoCXȂꍇ
  ͂ق̃_f[^𐶐̂g܂Bps -axl
  傤(󒍁FĂ̔zzpbP[WɂurandumfoCX܂B
  ɂȂƂꍇMAKEDEVĉ)B

  /usr/X11R6/bin/startẍpF

       dd if=/dev/urandom count=1|md5sum|sed -e 's/^/add :0 . /'|xauth -q
       xinit -- -auth "$HOME/.Xauthority"

  ͒҂startxp̂łBstartxXNvg̃JX^}CY
  ɂĂmany[ẂA tartx(1x),  xinit(1x), xauth(1x), md5sum(1)
  QƂĉBxauth"sK؂ȍsǉĂ܂(illegal add
  line)" ƌxAmd5sum̃o[W(󒍁Fmd5sumMD5̌vZ
  `FbNsvOł)Ƀ_bV(-)(W͂vZ
  checksum)ǉĂ\܂ md5sum_bV(-)g
  ꍇsedgĎO(strip)Ƃł܂Bȉ̂悤sedR}
  ḧύXĂ݂ĉB̓_bVǉȂmd5sumsƓ
  悤ɓ삷ׂłA킩₷̂ł͂Ȃł傤B

  (Thanks Jeffrey)

       ... 's/^\([0-9a-f]*\).*$/add :0 . \1/' ...

  rootɂ͂ȂȂstartx XNvgҏWłȂꍇ̓VXeǗ
  ɕύXĂ炤悤ɌAxdmݒ肷悤ɌĂ݂ĉ
  BǗ҂Ȃ/łȂ́A~/.xserverrcXNvg
  Ƃł܂B̃XNvg͎ۂXT[ȏ xinitɂ
  s܂BœKȈł̃XNvgXT[oN
  B邽߂~/.xserverrcŃNbL[邽߂̃}WbNNbL[
  sǉXT[oN܂B

       #!/bin/sh
       dd if=/dev/urandom count=1|md5sum|sed -e 's/^/add :0 . /'|xauth -q
       exec /usr/X11R6/bin/X "$@" -auth "$HOME/.Xauthority"

  XZbV𑀍삷邽߂xdmg͊ȒPxauthg܂B
  /etc/X11/xdm/xdm-configDisplayManager.authDir \[X`ĉ
  BxdmXT[oN鎞 -auth  pX悤ɂȂ܂B
   xdm(1) QƂĉBႦΒ҂ /etc/X11/xdm/xdm-config
  ͈ȉ̍sĂ܂F

       DisplayManager.authDir: /var/lib/xdm

  5.2.2.  NbL[̓]

  light.uni.verse T[ozXgXZbVJn ~/.Xauthority 
  NbL[擾܂BNbL[NCAgzXg(dark.matt.er)ɓ]
  ܂B light(T[o)dark(NCAg)zXgz[fBNg
  LĂ鎞͘b͊ȒPłB ~/.Xauthorityt@C͓Ȃ̂ŁANb
  L[]Kv͂܂BLĂȂꍇrshɂ@
  NbL[]ł܂B rshgă[gVF

          light$ xauth nlist :0 | rsh dark.matt.er xauth nmerge -

  ƂăNbL[]܂B

  1. [J~/.XauthorityNbL[p(xauth nlist :0)B

  2. dark.matt.erɓ](| rsh dark.matt.er)B

  3. ]~/.Xauthorityɒu(xauth nmerge -)B

     ƂƂӖ܂B rsh삵ȂƂ܂B܂rsh̓Z
     LeB̌_܂ (zXgUł)Brshg
     Ȃ/gȂȂȉ̂悤Ɏ蓮ŃNbL[]邱Ƃł
     F

     light$ echo $DISPLAY
     :0
     light$ xauth list $DISPLAY
     light/unix:0 MIT-MAGIC-COOKIE-1 076aaecfd370fd2af6bb9f5550b26926
     light$ rlogin dark.matt.er
     Password:
     dark% setenv DISPLAY light.uni.verse:0
     dark% xauth add $DISPLAY . 076aaecfd370fd2af6bb9f5550b26926
     dark% xfig &
     [15332]
     dark% logout
     light$

  ڂrsh(1)Axauth(1x)QƂĉB

  5.2.3.  NbL[g

  xfigƂdark.matt.er(NCAg)XAvP[V͔F؂Ɏg
  NbL[I~/.Xauthorityǂ݂܂B

  5.3.  ssh

  F؃R[h͈Ï؉ꂸɓ]܂BNڑ̂ƂSz
  Ȃssh(secure shell)gĉB͈Ï؉ꂽڑo
  RXtH[h܂B񑼂ɂ悢@͂܂BVXe
  ɍ\悢W₤̂łB sshz[y[W
  http://www.cs.hut.fi/ssh/Ă݂ĉB

  NXڑFؕ@ɂđɉmĂ܂񂩁HkerberosȁH

  [󒍁F KerberosɂāA 邢A{񂩂̃Rg
  ܂Ƃ߂܂F

  PxX̓MV_bɏoĂ閻E̎xz҃nfX̎łR̓
  E̖ԌłB"Kerberos"  MIT  "Athena" v̈
  ƂČJ܂BRFC 1510  1993 NɔsĂ܂B

  Kerberos ͐MłȂlbg[NňSȔF؁EʐMs߂ɁAM
  łO҂gVXełB̈Í Ώ̌ÍDESg
  BDESȂ̂ł܂苭͂܂BA`PbgƂdgŔF
  ŝŉ^pȒPŁASȔF؂ƒʐMł܂BzzZ^[K
  wāAK͂ȃVXeɂΉ邱Ƃł悤łB

  ӂ̕@ƁANCAgT[o𗘗pƂ͑肪{ɖ{
  ł邩݂ɕ܂BŁA݂MĂO҂ɐg
  ؂Ă炦΂悢ƂlɊÂĂ܂B̑O҂zzZ^
  [Ƃ̂ŁǍzzZ^[ɃT[o𗘗p邽߂̃`Pbg
  sĂ炢܂Bł`Pbg𔭍sĂ炦킯͂ȂNCA
  gƃT[ǒo^ĂKv܂BzzZ^[ɔs
  `PbǵANCAg(sĂ炤) ̌ňÍ
  ̂ŁA𕜍łƂƂ́ANCAg͊mɖ{lł
  Ƃ킩܂({lȂ΃`Pbg肾Ȃ̂ŁAT[o
  p邱Ƃ͂ł܂)B

  `Pbg͕ɓĂāÃ`Pbg̓T[ǒňÍ
  Ă܂BŁuT[o`Pbg𕜍ł = T[omɖ{
  lłvƂƂɂȂ܂(ɃZbVĂ
  āAȍ~̒ʐMł̃ZbVĝ߁A{lȊO͑sł
  )B

  ̌_́A`Pbg̍ėpłĂ܂ƂłBU҂̓`Pbg
  ̓e܂񂪁AĂ`PbgEĂ̂܂܂T[o
  ɑΖ{l̂ӂł܂B̂߂ɁA^CX^vÍĈ
  ɑ܂BÂ^CX^vt̃`Pbg͎g܂BɁAT
  [o̓^CX^vL^Ă̂ŁA܂X^v`
  Pbg͖łB

  VXeŜł̌_́AzzZ^[݂邱ƂłBׂĂo
  ^Ă̂ŁAjƈSȂɂ܂B

  XFree86 ̃}jA̖|({) JF ɂ܂B X ̔F؊֌W
  QlɂĂB܂Ał OPEN DESIGN No.14 CQ oŎ
  ISBN4-7898-1806-3 C3055 \1748ÉuWWŐV̈ÍɂZLeB
  ̎vQlɂȂ܂B

  |C^F

  o  FreeBSDnhubÑy[
     WFhttp://www.freebsd.org/ja_JP.EUC/handbook/handbook64.html#66

  o  http://www.releenet.co.jp/bsd/handbook/handbook60.html

  o  Jun Kuwamurãy[WFhttp://stealth.rccm.co.jp/~juk/krb/

     ]

  6.  guV[eBO

  ͂߂Ƀ[gXAvP[VN悤Ă̂܂܂ł͓
  ܂Bȉ2`3̃G[bZ[WAA@܂B

          xterm Xt error: Can't open display:

  DISPLAYϐȂA܂AvP[V-displaytOIvV
  w肳Ă܂BAvP[V-displayŎꂽ񂪂Ȃ
  ̂Ƃē܂A@IɊԈĂ܂B
  DISPLAYϐ𐳂ݒ肵Ă݂ĉ(VFɂ
  setenvAexportR}ĥǂ炩g܂)B

          _X11TransSocketINETConnect: Can't connect: errno = 101
          xterm Xt error: Can't open display: love.dial.xs4all.nl:0

  AvP[V̓T[oɃlbg[Nڑł܂BDISPLAYϐ
  ǂ`FbNāAT[oNCAgڑł邩ǂ
  mFĂĉ(T[oɃOCɃNCAg telnet
  ݂Ȃ)B

       _X11TransSocketINETConnect: Can't connect: errno = 111
       xterm Xt error: Can't open display: love.dial.xs4all.nl:0

  ڑ悤ƂĂT[o}V͂܂AwĂT[o
  ܂BzXgƃfBXvCԍgĂ邩mFĉB

          Xlib: connection to ":0.0" refused by server
          Xlib: Client is not authorized to connect to Server
          xterm Xt error: Can't open display: love.dial.xs4all.nl:0.0

  NCAg̓T[oɐڑĂ܂AT[o(ĂȂ)
  NCAgĂ܂B}WbNNbL[NCAg
  ]Ă邩mFĉB܂IĂȂǂmFĉ
  (T[o͐VZbVJnƐVNbL[g܂)B

  [       ZF  PÂ, fujiwara@cim.pe.u-tokyo.ac.jp

  KerberosɂāF 邢, rui@ic.netlaputa.ne.jpA{ K
  , ikko-@pacific.rim.or.jpA Jun Kuwamura, juk@rccm.co.jp

  ܂JF̕BɂςbɂȂ܂BɊӂ܂B]

