Meaningless days

自分が書きたいことを適当に書くだけ

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で「ファイル名を指定して実行」を開いて、「サービス」画面を立ち上げます。 そして、以下の二つのサービスを「無効」にします。

  • SSH Server Broker
  • SSH Server Proxy

f:id:doich0508:20180503195018p:plain

ファイアウォールの設定

Windowsファイアウォールが競合して接続できなくなるのでファイアウォールの設定を変更します。

既存プロファイルの無効化

次にセキュリティが強化されたWindowsファイアウォールを開き、受信の規則から以下の規則を無効化します。

  • SshProxy-Service-Domain
  • SshProxy-Service-Private

f:id:doich0508:20180503195040p:plain

新規プロファイルを作成

そして、新たに以下のような規則でプロファイルを作成します。

  • ローカルポート:22番
  • アクション:許可

※必要に応じて接続元IPアドレスを指定しても構いません

f:id:doich0508:20180503195108p:plain

以上でWindows側の設定はおしまいです。

WSL側の設定

WSL側でも以下の通りに設定を行います。

sshd_configの設定

ssh_configファイルを以下のように変更してSSH接続を受け付けるようにします。

  • UsePrivilegeSeparation をnoに設定する
  • AuthorizedKeysFile %h/.ssh/authorized_keys にかかっているコメントを外す

f:id:doich0508:20180503200101p:plain

接続元の設定

接続するクライアントの設定です。

SSH公開鍵の作成、転送

以下の通りにコマンドを作成してSSHキーを作成し、接続先の「authorized_keys」に保存します。

cd ~/
mkdir .ssh
chmod  700 .ssh
vi .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
ssh-copy-id [ユーザ名]@[ホスト名]

以上で設定は全て終了です。

これで

ssh [ユーザ名]@[ホスト名]

と接続すると接続ができます。