はじめに
Windowsからのssh接続をするとなると、WSL側でsshサービスを立ち上げる必要があり、PC起動後にひと手間かかります。
hrroct.hatenablog.com
これまではPC起動時に自動的にバッチ処理で立ち上げていたので、特に手間というほどのことはなかったのですが…。
あるタイミングのWindows Updateでプロキシ設定がWSL側に同様に適用されなくなり、Windows側からのsshサービス立ち上げがうまく行かなくなりました。
(これはこれで解決したいのですが、未だ対応する余裕がなく…)
そこで今回は趣向を変えて、そもそもsshでの接続をしない方向で攻めます。
やりかた
Cygwin + wslbridge2 で対応します。
WSLができて、もうCygwinに頼ることはないと思っていたのですが、ここにきて回帰することになるとは…。
wslbridge2 の導入
wslbridge2 とは、
github.com
Explore various ways to connect Windows Subsystem for Linux (WSL) with Windows terminal emulators and command line programs.
(DeepL訳) Windows Subsystem for Linux (WSL) を Windows ターミナルエミュレータやコマンドラインプログラムと接続する様々な方法を探る。
というわけで、Cygwinに限らずmsys2でも可能らしいのですが、今回はCygwinで。
リリースノートのページから、下記2つのファイルを落としてきて、展開します。
https://github.com/Biswa96/wslbridge2/releases
wslbridge2-backend.zip
wslbridge2-cygwin.zip
そして適当な場所に配置します。
C:\MyApps\wslbridge2\wslbridge2.exe
C:\MyApps\wslbridge2\wslbridge2-backend
このままだと起動せず、 cygwin1.dll がないと言われることになります。
そのためにCygwinを入れることになります。
www.cygwin.com
ちなみに、Cygwinとは…
・a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows.
・a DLL (cygwin1.dll) which provides substantial POSIX API functionality.
(DeepL訳)
・Windows上でLinuxディストリビューションと同様の機能を提供する、GNUおよびオープンソースツールの大規模なコレクション。
・POSIX APIの主要な機能を提供するDLL(cygwin1.dll)。
ということで、今回の用途は主に後者、DLLファイルに用があります。
ダウンロード、インストールをすれば、規定の通りなら下記ディレクトリにDLLファイルが存在すると思います。
C:\cygwin64\bin\cygwin1.dll
そして、Windowsの環境変数に下記を追記して、Pathが通るようにしておきます。
C:\cygwin64\bin
更に、Cygtermのコンフィグファイルの修正を行います。
(これには管理者権限が必要ですので、メモ帳を管理者権限で立ち上げるなりで開きましょう)
C:\Program Files (x86)\teraterm5\cygterm.cfg
ファイルが上記の場所にありますので、下記のように修正します(wslbridge2を経由して起動するイメージ)。
バックスラッシュはエスケープ目的で2つ重ねます。
SHELL = auto
↓↓↓
# SHELL = auto
SHELL = "C:\\MyApps\\wslbridge2\\wslbridge2.exe" -W~
ここでの W オプションは下記の意味合いがあります。
-W or --wsldir: Changes the working directory to WSL path.
最後に、下記を実行してTeratermが立ち上がれば一旦成功。
一緒に立ち上がってくるbackendのプログラムが気になるところですが…これはしょうがないものとして一旦放置です。
C:\Program Files (x86)\teraterm5\cygterm.exe
cygconnect(TeraTermマクロ)で起動したい
私がTeratermを使い続ける理由のほとんどはマクロ機能なので、マクロから起動できないと意味がありません。
動作確認としては、
cygconnect;
とだけ記載したwsl.ttl (名前は何でもいいですが拡張子をttlとする) を作成して、これを実行することで同様にTeraTermが開けばOKです。
ちなみに私は、下記の不具合を踏んでうまくいかなかったので、Teratermを最新にしておくことをオススメします。
私は teraterm-5.4.1.exe でうまくいきました。
github.com
最後に
これでsshに頼ることなく、WSL2への接続が可能になりました。
皆様のWindowsでの快適な開発ができることに寄与できたのなら幸いです。
以上でした!