ホストA - ホスト B - ホスト C
ホストAはホストCにホストBを経由してしかsshログインできない。ホストBがうんうん計算しているとき、ホストCで例えばmatplotlibを実行し、グラフをホストAの画面に出力させたい。
いくつかやり方がある。
やり方1)
A$ ssh -NL 2022:C:22 B &
A$ ssh -X -p 2022 localhost
C$ xclock
やり方2)
A$ ssh -Y B
B$ ssh -Y C
C$ xclock
やり方1)の場合、半永続的である。なくすためにははじめのバックグラウンドにいってしまったプロセスをkillする。また、間違ったホスト名を与えると、リモートホストを間違ったぞというお節介が入りログインできなくなる。これを除去するためにはお節介の表示するコマンドを入力すれば良い。
ssh-keygen -f "[ホームディレクトリパス]/.ssh/known_hosts" -R "[localhost]:2022
やり方2)は一回こっきりだが、後腐れがないのでよい気がする。
やり方3)
ホストAのホームディレクトリの.ssh/configに以下を書く。
Host C
ForwardX11 yes
ProxyCommand ssh -W %h:%p B
そして、
A$ ssh C
C$ xclock
やり方4)
ssh -Y [user name']@C -J [user name]@A
C$ xclock
やり方3), 4)はホストAから一発でログインするので、ホストBにログインしている場合、戻らないといけないのが面倒。
sshforward(-Yオプション)がsshdで受け付けられない場合、
X11UseLocalhost no
を追加して
/etc/init.d/ssh restart
でおk.