docker をインストールするときに、WSL2 を有効にし、その上で Windows Store から Ubuntu 20.04 をインストールした。
外部から ssh アクセスできるように sshd を立ち上げる。
$ sudo apt install net-tools
$ ifconfig -a ...(略) eth0: flags=4163mtu 1500 inet 172.21.157.41 netmask 255.255.240.0 broadcast 172.21.159.255 inet6 fe80::215:5dff:fe98:3587 prefixlen 64 scopeid 0x20 ether 00:15:5d:98:35:87 txqueuelen 1000 (Ethernet) RX packets 487 bytes 265843 (265.8 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 114 bytes 7900 (7.9 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ...(略)
$ netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 172.21.144.1 0.0.0.0 UG 0 0 0 eth0 172.21.144.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
Ubuntu on WSL2 : 172.21.157.41 (1010 1100 0001 0101 1001 1101 0010 1001) Docker host : 172.21.144.1 (1010 1100 0001 0101 1001 0000 0000 0001) broadcast : 172.21.159.255 (1010 1100 0001 0101 1001 1111 1111 1111) subnetmask : 255.255.240.0 (1111 1111 1111 1111 1111 0000 0000 0000)
$ sudo service ssh restart
$ sudo service ssh restart .... sshd: no hostkeys available -- exiting. ← エラーとなる。
[解決法] sudo ssh-keygen -A ← いったんkeyを生成してから ssh サービスを起動すればよい
/etc/ssh/sshd_config の PasswordAuthentication no を yes に書き換えてから、sshd を再起動する。。
$ sudo service ssh restart
Windows の TCP 22 番ポートに来たパケットを Ubuntu on WSL2 (172.21.157.41) の 22 番ポートに転送する。
[管理者権限のコマンドプロンプト上で] ポートフォワーディングを設定する % netsh.exe interface portproxy add v4tov4 listenport=22 connectaddress=172.21.157.41 ポートフォワーディングを有効にする(IP Helper サービスを起動する) % sc.exe config iphlpsvc start=auto # ブート時の自動起動設定 % sc.exe start iphlpsvc # サービスの起動
[管理者権限のコマンドプロンプト上で] % netsh.exe interface portproxy delete v4tov4 listenport=22