SSH
X11
XWindowSystem
VcXsrv
WindowsSubsystemForLinux

最初に

Widows Sub System For Linux(WSL)とX window systemを組合せる記事はあるのですが、
サーバーにSSH接続してX転送して使う事だけに注目した記事が無かったので書いてみる事にしました。

何ができるのか

下のスクリーンキャプチャの様に、
Windows上でサーバー側のUbuntuアプリケーションを動かすことが出来ます。
image.png

この記事でやること

  • 導入の準備として、
    • UbuntuにSSHサーバーをインストール
    • WindowsにX window systemの導入
  • 使用方法
    • SSH接続してWindowsからUbuntuアプリを起動してみる

を記載します。
WSLのインストール方法は他に良い記事がたくさんあるのでそちらを参考にして下さい。

準備

UbuntuのSSHサーバー設定

Ubuntu側での操作です。
Ubutnu側で操作して下さい。

SSHサーバーをインストール

ターミナルで以下を入力

Terminal
$ sudo apt install openssh-server

X転送の設定

X転送(Xポートフォワーディング)が有効になっていることを確認

Terminal
$ cat /etc/ssh/sshd_config

で、
X11Forwarding yes
となっている事を確認して終了。
WindowsにX window systemの導入に進む。

noになっていたら修正する。

SSHのX転送をするように設定する

Terminal
$ sudo nano /etc/ssh/sshd_config

sshdを再起動。
Ubuntu 14.04の場合

Terminal
$ service sshd restart

Ubuntu 16.04の場合

Terminal
$ systemctl restart sshd

WindowsにX window systemを導入する

X window systemとして、VcXsrvを使います。
Windowsでの操作です。

VcXsrvのインストール

↓のサイトからインストーラーをダンロードしてインストール。
https://sourceforge.net/projects/vcxsrv/

Windows Subsystem for Linuxの設定

WSLにX11をインストールして使用できるようにします。

x11-appsの導入

下のコマンドでインストール

Terminal
$ sudo apt install x11-apps

WSLにディスプレイの環境を設定

.bashrcに環境変数$DISPLAYの設定

Terminal
$ echo 'export DISPLAY=localhost:0.0' >> ~/.bashrc

設定の再読込

Terminal
$ source ~/.bashrc

動作しているかの確認

Terminal
$ xeyes

↓な感じのウィンドウが現れたらOK
image.png

使用方法

今回はSSHのクライアントとしてWSLを使用します。
TeraTermやPuTTyを使うっても良いですが、今回は説明しません。
"SSHクライアント+X転送" 等で検索すれば情報で出てくるので各自でやってみて下さい。

X window sytemを起動する

VcXsrvが起動されていない場合は起動する。

SSHでサーバーに接続する

WSLでSSHコマンドでサーバーに接続します。
この時にX転送使用するため -X オプションをつける事。

Terminal
$ ssh -XC -l ユーザー名 UbuntuサーバーのIPアドレス

接続できたら使用したいアプリケーションを起動してみる。
例えば、geditを起動してみる。

Terminal
$ gedit &

別ウィンドウでgeditが立ち上がるはずです。

参考記事

https://tamosblog.wordpress.com/2016/03/11/windows_10_dev/
https://qiita.com/nishemon/items/bb3aca972404f68bfcd6
https://qiita.com/fukuramikake/items/283b817c16725af79a28