Skip to content

Instantly share code, notes, and snippets.

@sharl
Last active May 30, 2020 00:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sharl/31eb2ae824d7002abb2e7ef99f5b6f5a to your computer and use it in GitHub Desktop.
Save sharl/31eb2ae824d7002abb2e7ef99f5b6f5a to your computer and use it in GitHub Desktop.

https://qiita.com/yabeenico/items/15532c703974dc40a7f5 を超参考にさせてもらっています

WSL2のOS側

/etc/ssh/ssh_host_rsa_key

まずはホストキーがないので生成

$ sudo ssh-keygen -t rsa -N '' -f /etc/ssh/ssh_host_rsa_key

/etc/ssh/sshd_config

Port 22
PasswordAuthentication yes

distro別にPortを設定する。ひとまずパスワード認証許可で。

/etc/sudoers

%sudo   ALL=(ALL:ALL) NOPASSWD: ALL

sshdを起動してポートフォワードをするスクリプトを用意

$ cat /opt/pf22.sh
#!/bin/bash
if [ -f /var/run/sshd.pid ]; then
    sudo kill $(cat /var/run/sshd.pid)
fi
sudo /usr/sbin/sshd

ip=$(ip a s eth0 | sed -e 's,.*inet \(.*\)/.*,\1,p;d')
netsh.exe interface portproxy delete v4tov4 listenport=22
netsh.exe interface portproxy add    v4tov4 listenport=22 connectaddress=${ip}

WSL2側の:22にホスト側からつながるようにnetshを叩くのが常道のようです

Windows側

タスクスケジューラに管理者権限でログイン時に実行するように登録します。 登録には管理者権限が必要です(ややこしい

schtasks /create /tn "Microsoft\Windows\Windows Subsystem For Linux\sshd" /tr "C:\Windows\system32\wsl.exe -d CentOS7 --exec bash /opt/pf22.sh" /sc onlogon /rl highest /F

CentOS7 は WSL2 の名前です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment