WSLホストにSSHができるようにする
日本時間の5/1にWindows 10の機能更新プログラムの配信が開始になりました。 このアップデートによってWSLがバックグランドで実行できるようになりました。
今後、リモート上の端末(例えば、Macだったりとか他の端末からteratermで接続するとか)からWSLにSSH接続を行なって作業を行いたいとかansibleで設定を行いたいという需要も増えてくるかと思いますのでリモートからSSH接続を行う方法を書きたいと思います。
今回の実行環境
SSH接続先:Windows 10 Pro(version1803) SSH接続元:MacOS X 10.12.6
Windows自体の設定
まずは、ホストとなるWindowsに対して設定を行なっていきます。
SSHサービスの停止
まずは、WSLと競合する二つのサービスを停止します。 スタートメニューもしくはWindowsボタン+Rで「ファイル名を指定して実行」を開いて、「サービス」画面を立ち上げます。 そして、以下の二つのサービスを「無効」にします。
ファイアウォールの設定
Windowsファイアウォールが競合して接続できなくなるのでファイアウォールの設定を変更します。
既存プロファイルの無効化
次にセキュリティが強化されたWindowsファイアウォールを開き、受信の規則から以下の規則を無効化します。
- SshProxy-Service-Domain
- SshProxy-Service-Private
新規プロファイルを作成
そして、新たに以下のような規則でプロファイルを作成します。
- ローカルポート:22番
- アクション:許可
※必要に応じて接続元IPアドレスを指定しても構いません
以上でWindows側の設定はおしまいです。
WSL側の設定
WSL側でも以下の通りに設定を行います。
sshd_configの設定
ssh_configファイルを以下のように変更してSSH接続を受け付けるようにします。
- UsePrivilegeSeparation をnoに設定する
- AuthorizedKeysFile %h/.ssh/authorized_keys にかかっているコメントを外す
接続元の設定
接続するクライアントの設定です。
SSH公開鍵の作成、転送
以下の通りにコマンドを作成してSSHキーを作成し、接続先の「authorized_keys」に保存します。
cd ~/ mkdir .ssh chmod 700 .ssh vi .ssh/authorized_keys chmod 600 .ssh/authorized_keys ssh-copy-id [ユーザ名]@[ホスト名]
以上で設定は全て終了です。
これで
ssh [ユーザ名]@[ホスト名]
と接続すると接続ができます。