そぬばこ

備忘録とか、多分そんな感じ。

WSLからsshしてX転送するまで

なんでWSLでわざわざやるんですか?

ssh

鍵作ってなかったので、まずは作ります。

$ ssh-keygen -t rsa -b 4096 -C "mail@address.com"

鍵を渡します。ついでに.ssh/configも書いておきます。

Host server
  HostName server.address.jp
  Username username

そしたら、一回sshできるか確認して

$ ssh server
Bad owner or permissions on /home/hoge/.ssh/config

ごめんやん。

$ ls -la ~/.ssh
...
-rw-rw-rw- 1 hoge hoge ..... config

権限合わせます。

$ chmod 700 ~/.ssh/config
$ ssh server

OK.

出来たら、WSL戻ってきて鍵渡してssh確認して

$ ssh-copy-id server
$ ssh server

OK.

Xサーバのアプリケーション

ってそもそもWSL上で動くんかい? まず入れよう。

$ sudo apt update
$ sudo apt install x11-apps

xclockとか試そう。

$ xclock
Error: Can't open display:

そりゃそうか。Windows上でXサーバを動くやつを入れないとね。

いろいろあるけど、VcXsrvを入れます。

sourceforge.net

インストールすると、デスクトップに"XLaunch"という名前のショートカットがあるので、それを起動します。

起動するとタスクバーに"X"っていうのが出まして、マウスオーバーするとhostname:0.0 x clientsと表示されるのを確認。 WSL側で環境変数を設定する必要があるので、これをもとに書きます。 面倒くさいので、.bashrcに入れます。

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

xclockが動いているのを確認して、モーマンタイ。

$ xclock

ssh + X転送

オプションで-Xつけるだけ。 VcXsrv起動状態で、ssh -Xします。

$ ssh -X server
$ xclock

xclockが動いているのを確認して、おわり。

オマケ (WSL日本語化)

Warning: locale not supported by C library, locale unchanged

っていう警告がよく出ます。 OSの言語設定を変えればよいのですが、WSLでは標準でja_JP.UTF8に設定出来ません。

$ local -a

つまるところ、この中に入っているものじゃないと、環境変数LANGja_JP.UTF8を設定しても意味がありません。 だから、入れます。

$ sudo apt install language-pack-ja

入ったら、セットします。

$ sudo update-locale LANG=ja_JP.UTF8

WSLを再起動して、dateコマンドなどを打って日本語化していれば成功です。

$ date
2020429日 水曜日 22:52:51 JST

おわり