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

2025/7/27 [06:54:25] (日) 天気

やりたいこと

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 2210022

最初の行にある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

↑こちらのページにすべてがあります(多謝)


image


今日この頃のクソ暑さ対策としては、きちんと良い睡眠をとる、のが一番らしい。ということは。

・寝酒、夜に酒を飲むとアルコール分解の負荷が質の良い睡眠を妨げるので、夜に酒を飲んではいけない

・となると、昼酒が暑さ対策の最適解となる


今西清兵衛商店の春鹿シリーズはどれも大好き!

<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】