XForwardingのやり方
ついでに、ssh XForwardingのやり方も調べました。
設定方法
例として、sshdが動いているRemoteマシンと、そこへssh接続するLocalマシンがあり、RemoteマシンでXクライアント(emacsとか)を起動し、LocalマシンのXサーバで表示する場合を考えます。
Remoteマシンのsshd_configを以下のように書き換えます
X11Forwarding no ↓ X11Forwarding yes
設定を有効にするため、sshdを再起動します。
# /etc/init.d/sshd restart
あとは、Localマシンから以下のように接続します
$ ssh -X user@remote.domain
sshでRemoteマシンに接続した後、以下のような出力があればXForwardingに成功しているはず。
$ echo $DISPLAY localhost:10.0 $ emacs #Localマシン上にemacsのウインドウが表示される
なお、ssh接続時に、~/.Xauthorityが生成されない場合、xauthプログラムが入ってない可能性がありますので、yum install xauthとかで入れて、接続しなおしてください。
やってみた感じ、通信データ量はかなり多いみたいですね。
回線が細いと、emacsの起動をするだけで数分かかります。
また、XForwardingの場合、nohupでXアプリを起動しても、sshコネクションを終了するとXアプリも終了してしまいます。
環境変数DISPLAYについて
環境変数DISPLAYは、":0.0"(通常)だったり、"localhost:10.0"(XForwarding)だったりしたんですが、値の意味が気になったので色々検索してみると、解説が見つかりました。
以下引用*2。
環境変数`DISPLAY'の書式は`HOST:DISPLAY.SCREEN'です。HOSTはXウィンドウシステムのサーバーマシンの名前、DISPLAYは同じマシンの別のサーバーと読者のサーバー(X端末)を区別するために任意に割り振られた番号、SCREENは稀にしか使いませんが1つのXサーバーで複数の端末画面を制御する場合に使います。ピリオドとSCREENは省いてかまいません。指定する場合、SCREENは普通はゼロです。