LAN内の別PCからWSLにログイン

やりたいこと
LAN内のPC間でrsyncを使ってファイルの同期
前提として
WINDOWS PCはLAN内の別PCからport番号10022でsshアクセスされることにする(port番号はWSLの他サービスで使わない番号ならなんでもOK)
・10022を受けつけるようにFIREWALLを設定する
・10022へのアクセスをWSLの10022に転送する
大雑把に
→WINDOWS PCのLANでのIPアドレス(192.168.XX.XXX)が外からの玄関
→仮想環境のWSLは仮の?IPアドレス(172.XXX.XXX.XXX)が中での窓口
玄関から奥にある客間に案内するためにfirewallやport forwardを設定する。
玄関に来た客がポート番号10022を指定してたら、WSLの窓口に10022でご案内するみたいな…わかったようなわからないような例えですみません。
準備するのは以下
WINDOWS側
・Firewallの設定
・port転送の設定
↑WINDOWSで、Powershellで設定
WSL側
・sshdの設定と起動
↑WSL、ubuntuでの設定
【Firewallの設定】WINDOWS側
適当なディレクトリにpowershellのシェルスクリプトを書く。
$port=10022;
port番号は「10022」
まずは以前設定していたかもしれないfirewallのルールを削除
iex "Remove-NetFireWallRule -DisplayName ’WSL 2 Firewall Unlock’ ";
最初は設定もなにもないところを削除しようとするのでエラー表示されるけど、無視して大丈夫。
iex "New-NetFireWallRule -DisplayName ’WSL 2 Firewall Unlock’ -Direction Outbound -LocalPort $port -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName ’WSL 2 Firewall Unlock’ -Direction Inbound -LocalPort $port -Action Allow -Protocol TCP";
これは呪文。外向け(outbound)内向け(inbound)の通信を許可する。たぶん、DisyplayNameを揃えておけば大丈夫じゃないかな。
【port転送の設定】WINDOWS側
port転送するためにはWSLに割り振られたIPアドレスを知る必要がある。
$wslip = (wsl -e hostname -I).trimend()
hostname -I
だけだとケツに空白がついてるっぽいのでtrimendする。これで「$wslip」にWSLのIPアドレス(172.XXX.XXX.XXX)が入る。
これでまずは以前設定していたかもしれないport転送設定を削除
iex "netsh interface portproxy delete v4tov4
listenaddress=* listenport=$port"
これも設定されてない時点だと「見つからない」というエラーが出るけど問題はないっぽい。
削除したら改めてポート転送の設定をする
iex "netsh interface portproxy add v4tov4
listenaddress=* listenport=$port
connectaddress=${wslip} connectport=$port";
listenで監視するアドレスとポートを指定。connectで接続するアドレスとポートを指定。
iex "netsh interface portproxy show all";
で、設定したものを確認する
Address Port Address Port
* 10022 ********** 10022
以上をまとめたものをシェルスクリプトとして保存。
実行する時は管理者権限が必要。
【sshdの設定と起動】WSL側
WSL側というかubuntuでsshdの設定。やることは2つ。
1)
opensslのインストール
sudo apt install openssl
↑これでインストールすればOK
/etc/ssh/sshd_config
という設定ファイルを編集更新。
Port 22
→10022
最初の行にあるport番号を、転送されてくる「10022」番に変更すればOK。
2)
WSLのubuntuの初期状態だと systemd が動いていない(今日時点)のでsystemctlを使えるようにする。
/etc/wsl.conf
というファイルを作って以下を記載する
[boot]
systemctl=ture
systemdを起動させる。この設定(ファイルを配置)をしたらWSLの再起動が必要。
以上で設定は終了。sshを起動する
sudo sytemctl enable ssh
sudo sytemctl restart ssh
これでsshサービスは起動する…本当にちゃんと起動してるか確認
sudo service ssh status
「Active」の項目が「active(running)」になっていれば大丈夫。
以上で準備は整ったはずなので、別PCでWINDOWS PCのWSLにアクセスしてみる。
sftp -P 10022 USERNAME@192.168.XX.XXX
ポート番号を指定してアクセスして、WSLのユーザー名でログインできればOK。
ちなみに、WSLではなくて、WINDOWSにsshでログインしたり、sftpでファイル転送するならWINDOWSのOpenSSLサーバサービスを起動するだけでok。
「wsl2 で立てたサーバーにローカルネットワーク内の他の端末からアクセスする」
https://qiita.com/kentomo1002/items/82234030e712c44c2e40
↑こちらのページにすべてがあります(多謝)

今日この頃のクソ暑さ対策としては、きちんと良い睡眠をとる、のが一番らしい。ということは。
・寝酒、夜に酒を飲むとアルコール分解の負荷が質の良い睡眠を妨げるので、夜に酒を飲んではいけない
・となると、昼酒が暑さ対策の最適解となる
今西清兵衛商店の春鹿シリーズはどれも大好き!

