WSL2にUbuntu 20.4を入れて環境を整えてみると、結構いい感じになったので書き残しておく。
- Windows terminalをインストールした
- [settings.json] defaultProfile をWSL Ubuntuに設定した
- [settings.json] startingDirectory をHOMEのところにした
- [settings.json] colorScheme をいい感じにした
- ls で表示される色を変えて見やすくした
- open でexplorerが立ち上がるようにした
- sshでwindows側から接続できるようにした
- 別のマシンからWSLにsshで接続できるようにした
Windows terminalをインストールした
タブ機能などがあり、コマンドプロンプトやPowershellより使いやすい。
[settings.json
] defaultProfile
をWSL Ubuntuに設定した
v
から設定を選び、settings.json
を編集した。
初期状態ではWindows terminalを開くとPowershellが起動するようになっているが、WSL Ubuntuを起動するように defaultProfile
のUUIDをUbuntuのguid
に設定した。
[settings.json
] startingDirectory
をHOMEのところにした
初期状態ではWindowsのユーザーのHOME (/mnt/c/Users/<user_name>
) がカレントディレクトリになって起動してしまうが、UbuntuのユーザーのHOME (~
) から始めたいので
"startingDirectory": "//wsl$/Ubuntu-20.04/home/<user_name>"
を設定した。
startingDirectory
を設定してもうまくいかないという記事を見かけたが、//wsl$/Ubuntu-20.04
ではなく、//wsl$/Ubuntu
としているからじゃないかと思う。
[settings.json
] colorScheme
をいい感じにした
とりあえず
"colorScheme": "One Half Dark"
にした。
Windows ターミナルの配色 | Microsoft Docs
ls
で表示される色を変えて見やすくした
ls
をしたときに、other-writable
なディレクトリがクッソ見にくいので、見やすいように色を変えた。
ls
の色を変えるためには、$LS_COLORS
に設定を書けば良い
$LS_COLROS
の設定を .dircolors
に書けば、.bashrc
で読んでくれるので、Windows terminalで
$ # 初期状態を書き出す $ dircolors -p > ~/.dircolors $ # 色の設定を変える $ vim ~/.dircolors
dircolorsの設定は、dircolors -p
に記述されているように、指定したいスタイルを数字で;
区切りで記述する。
$ cat ~/.dircolors ... # Attribute codes: # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed # Text color codes: # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white # Background color codes: # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white ...
例えば、文字色を赤にして背景を青にしたければ31;44
とし、アンダースコア付きで背景色を白にしたければ04;47
とする。
vimで開くと指定したスタイルがどう見えるかを表示してくれるのでわかりやすい。
とりあえず、見にくかったOTHER_WRITABLE
を太字で文字色を緑に設定した。
かなり見やすくなったと思う。
open
でexplorerが立ち上がるようにした
Twitterで見た。
alias open=explorer.exe
を.profile
とかで設定すれば、open .
とかでエクスプローラーを開くことができる。
sshでwindows側から接続できるようにした
必要になる場面はあんまりないと思うが、IDEなどからSSHで接続する必要があったので設定した。
$ sudo apt install openssh-server $ sudo vim /etc/ssh/sshd_config ... PasswordAuthentication yes ... $ sudo service ssh restart
とすればWindowsからユーザー名とパスワードでSSH接続ができる。
PS > ssh <user_name>@localhost <user_name>@localhost's password: Welcome to Ubuntu 20.04 LTS (GNU/Linux 4.19.104-microsoft-standard x86_64)
WSLのUbuntuはSystemdではないし、chkconfigも使えないっぽいので、自動起動させるのはすこし面倒くさい。
別のマシンからWSLにsshで接続できるようにした
同一LAN内の別のマシンや、外部ネットワークからsshでWSLに入れるようにした。
まずファイヤーウォールで22番ポートを開ける必要がある。
「設定」→「ネットワークとインターネット」→「Windows ファイヤーウォール」→「詳細設定」 で受信の規則に22番を許可するように設定する。
次に、ポートフォワーディングの設定をする。
$ sudo apt install net-tools $ vim /opt/bin/start_ssh.sh $ cat start_ssh.sh #!/bin/bash service ssh restart IP=$(ifconfig eth0 | grep 'inet ' | awk '{print $2}') netsh.exe interface portproxy delete v4tov4 listenport=22 netsh.exe interface portproxy add v4tov4 listenport=22 connectaddress=$IP $ chmod a+x start_ssh.sh
start_ssh.sh
にsshの起動と、ポートフォワーディングについて記述する。
ポートフォワーディングはnetsh.exe
にlistenportとフォワーディングする先を指定する。WSL側のIPアドレスを知る必要があるため、WSL側からnetsh.exe
を実行する。
netsh.exe
は管理者権限が必要なので、WindowsでPowershellを管理者権限で起動し、
> wsl -u root -e bash '/opt/bin/start_ssh.sh'
を実行すれば、sshで別のマシンから接続ができる。
マシンの起動時にこの操作を行うには、タスクスケジューラからトリガーをシステム起動時にして上記操作を実行させるようにする。 ただし、「最上位の特権で実行する」にチェックを入れること。 また、設定の「スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する」にチェックを入れておかないと、うまく実行されないことがある(気がする)