苦労して構築する Windows10 + WSL2 + Visor ターミナル環境
はじめに
Windows のターミナル環境は選択肢が多くて、業務だと TeraTerm や PuTTY あたりがよく使われていると思うけれど、他にも多数( Rlogin, Poderosa, Hyper, mRemoteNG, etc... )のターミナルエミュレータが存在するし、最近は Microsoft 純正の Windows Terminal というのも出ているよね。
個人用途ではターミナルは PuTTY を使い続けてきて、最近は Mac の iTerm2 の使用感に近付けている。
- ホットキーでターミナルを Visor 表示できる。
- ターミナルを立ち上げると WSL2 環境のシェル ( zsh ) が立ち上がる。
- ウィンドウは透過させて、タブもある。
みたいな感じ。
Visor とは
Visorと言っているのは、こういう挙動のこと。
最近は「Quake-style」と呼ぶみたい。
ホットキーを押下するとターミナルの表示/非表示を切り替えられる。これが、頻繁にターミナルと他のアプリケーションを行き来する時(Webで調べながらCUI作業するとか)なんかには、めちゃ便利なわけ。
準備するもの
- Windows 10 Pro 64bit
- Ubuntu on WSL2
- ConEmu
- PuTTY
- AutoHotkey
Visor するだけなら ConEmu だけでいい。
これに加え、ぼくの場合は
- cmd.exe や PowerShell ではなく WSL2 のシェルを立ち上げるために WSL2 と Ubuntu。
- さらに、普段の使用感(フォントとか)で操作するために PuTTY。
- さらに、ConEmu が起動していない時でもホットキーで ConEmu を呼び出すために AutoHotkey。
を組み合わせて使っている。
ConEmu
-
ConEmu
( 想定のインストール先:C:\App\ConEmu\ConEmu64.exe )
タブ付きターミナルエミュレータ。Quake style
として、Visor の機能が搭載されている。
ターミナルエミュレータの中では自由度が高く、かなり細かくカスタマイズができる。
ここまで読んで ConEmu だけでいいや!って人は Cmder の方がオススメかも。
WSL2 + Ubuntu
WSL2 環境を有効に出来たら Microsoft Store で Ubuntu をインストールする。
PuTTY
- PuTTY => iceiv+putty
( 想定のインストール先:C:\App\PuTTY\putty.exe )
昔から好きで使っているのだけれど、不満はある。
- UTF-8 の Emoji がまともに表示できない。
- 端末タイプとキー割り当ての対応がおかしい?
PuTTY で SSH 設定の端末タイプを xterm-256color
にして ssh -> zsh -> ( tmux -> ) neovim
とした環境だと Home, End が期待通りに動作しなくて、screen-256color
にすると期待通りに動作する。
(環境が複雑すぎて原因の切り分けができない…)
という挙動があって、PuTTY 自身はターミナルマルチプレクサでも無いのに今は screen-256color
を指定して使っている。この状態には違和感があるし、なにより対応する zsh 側の設定が気持ち悪くなる。
この件については今回は無視する。
AutoHotkey
-
AutoHotkey => ぼくがダウンロードしたのはこれ
( 想定のインストール先:C:\App\AutoHotkey\AutoHotkeyU64.exe )
Powerful. Easy to learn.
The ultimate automation scripting language for Windows.
こいつがあればキーボードだけで生きていける。
各種設定
さあ、ここからが本番だ。
PuTTY
iceiv 版の PuTTY をダウンロードしたなら、ja-JP
の中の *.lng
ファイルを putty.exe
と同じフォルダにコピーすると日本語になるよ。
以降の画像は日本語化前の英語表記のものです。
-
puttygen.exe
を実行。 - Ubuntu には公開鍵認証方式でSSHログインしたいので、鍵を生成するよ。
今回はちょっと意識高くECDSA
521bit
を選んで、「Generate」をクリック。
- カーソルをグルグル動かすと生成が進む。
- 公開鍵を生成する。
- ファイル名は「id_ecdsa.pub」とでもしておく。
- 秘密鍵を生成する。
- 警告が出るが、「はい」でOK。今回は「パスフレーズ無し」で鍵を作る。
- ファイル名は「id_ecdsa.ppk」とでもしておく。
- ウィンドウ右上の「☓」をクリックして閉じる。
次!
-
putty.exe
を実行。 -
Connection > SSH > Auth
を開いて、秘密鍵として先ほど生成したid_ecdsa.ppk
を指定する。 -
Connection > Data
ユーザ名に Ubuntu をインストールした時に指定したユーザ名を入れる。 ぼくの場合は諸事情で端末タイプを「screen-256color」というものに変更しているけれど、詳しくはググってくれ! -
Session
で、接続先を127.0.0.1
、設定名をwsl
で、保存する。 - ウィンドウ右上の「☓」をクリックして閉じる。
次!
ConEmu
ホットキーは「左Win + 半角/全角」にするよ
ConEmu64.exe
を実行。「Save settings」をクリックして閉じる。
ウィンドウ右上の「☓」をクリックして、一度 ConEmu を終了させる。
-
C:\App\ConEmu\ConEmu.xml
が生成されているので、サクラエディタか何かで開く。-
MinimizeRestore
の値を00005bf4
-
MinimizeRestore2
の値を00005bf3
に、それぞれ書き換えて保存する。
-
次!
WSL2 + Ubuntu (前半)
-
管理者権限に昇格して SSHサーバ(
openssh-server
パッケージ)をインストールする。$ sudo su - # apt update && apt install openssh-server
-
作業ユーザで sudo する際のパスワード確認を省略するように設定する。
# EDITOR=vim visudo .. (以下を変更。「%sudo」の行に「NOPASSWD: 」を追記して保存する。) %sudo>--ALL=(ALL:ALL) ALL ↓ %sudo>--ALL=(ALL:ALL) NOPASSWD: ALL
-
SSHサーバで公開鍵認証を有効にする。
# cd /etc/ssh/ # ssh-keygen -A # vim sshd_config .. (以下を変更。2箇所のコメントアウトを外して保存する。) #PubkeyAuthentication yes ↓ PubkeyAuthentication yes .. #AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 ↓ AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
-
設定反映のため、SSHサーバを再起動して、管理者権限を抜ける。
# service ssh restart # exit
-
ユーザ権限に戻ったら、PuTTY から公開鍵認証でログインできるようにする。
前準備としてputtygen.exe
を起動して、File > Load private key
から先ほど生成した秘密鍵(id_ecdsa.ppk
)を開いて、画像の赤い囲い部分のテキスト(公開鍵)をコピーする(改行されて見えるけれど、コピーすると1行だよ!)。
公開鍵をコピーしたらコマンド入力に戻って、公開鍵をサーバ上に登録する。$ cd $ mkdir .ssh/ $ chmod 700 .ssh/ $ touch .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys $ vim .ssh/authorized_keys .. (コピーしためちゃ長い公開鍵1行分を追記して保存する。) ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1M...== ecdsa-key-20200912
-
一旦サーバから抜ける。
$ exit
サーバ上の作業終わり!
次!
WSL2 + Ubuntu (後半)
ここまでの設定では WSL の仕様で Windows を再起動しても sshd が自動で立ち上がらない。
なので、以下の手順で Windows 起動時に Ubuntu の sshd を起動するように設定する。
-
以下の内容で
C:\App\startup_for_wsl.ps1
を作成。startup_for_wsl.ps1$wsl_is_available = $FALSE while( ! $wsl_is_available ) { ubuntu.exe run sudo service ssh restart $wsl_is_available = $? if( $wsl_is_available ) { break } else { Start-Sleep -Seconds 5 } }
ubuntu.exe
に関しては Microsoft Store で- Ubuntu をインストールした人は
ubuntu.exe
のまま。 - Ubuntu 18.04 をインストールした人は
ubuntu1804.exe
。 - Ubuntu 20.04 をインストールした人は
ubuntu2004.exe
。
に適宜読み替えてください。
- Ubuntu をインストールした人は
-
何もないところを右クリック -> 新規作成 -> ショートカット、「項目の場所」として
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -File C:\App\startup_for_wsl.ps1
※ 改めて調べていたら WSL2 からはこんなことしなくても、systemd を PID 1 で動かすハックが存在するみたい
AutoHotkey
ホットキーは「左Win + 半角/全角」とする。
AutoHotkey上では
-
LWin
が「左Windowsキー」 -
vkf4
が「半角/全角キー」
を意味する。
-
以下の内容で
C:\App\AutoHotkey\MyHotkey.ahk
を新規作成。MyHotkey.ahk#WinActivateForce #HotkeyInterval 2000 #HotkeyModifierTimeout 100 #MaxHotkeysPerInterval 100 #InstallKeybdHook #UseHook ; ConEmu LWin & vkf4:: Process, Exist, ConEmu64.exe if ErrorLevel <> 0 { IfWinActive, ahk_class VirtualConsoleClass { Send, #{vkf4} } else { IfWinExist, ahk_class VirtualConsoleClass { WinActivate, ahk_class VirtualConsoleClass } else { Send, #{vkf4} WinActivate, ahk_exe ConEmu64.exe } } } else { run, C:\App\ConEmu\ConEmu64.exe, C:\App\ConEmu } return
AutoHotkey 自体にスタートアップで起動する機能は無いので、タスクスケジューラで設定する。
スタートメニューから「タスクスケジューラ」を起動する。
左ペインの「タスクスケジューラ ライブラリ」を右クリックして「新しいフォルダー(N)」で
「App」とか適当に作成して、右ペインの「タスクの作成」をクリック。
-
それぞれ以下のように入力して、「OK」 をクリック。
動作確認
長かった!
ここまで正しく設定されていれば、「左Winキー + 半角/全角キー」をホットキーとして ConEmu のターミナルが現れたり消えたりするはずだ!
しかも、PuTTY を通じて WSL2環境の Ubuntu のシェルが表示されているはずだ!
それに、Windows を再起動しても何もしなくてもホットキーは動作するはずだ!
ヤッター!
さいごに
スクリーンショットに写っている秘密鍵/公開鍵に関しては、破棄しており実際には使用していないのでご心配なく。
Author And Source
この問題について(苦労して構築する Windows10 + WSL2 + Visor ターミナル環境), 我々は、より多くの情報をここで見つけました https://qiita.com/mtkhs/items/c2cb07c1494c4e8d215e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .