Windowsのsshdセットアップ

Windows10の1803バージョン以降では、オプション機能の追加によりWindows標準のOpenSSHサーバーを追加インストールできます。
設定にはWindows特有の仕様がありますが、動作じたいは標準的なOpenSSHサーバーであるためsshdの第一選択肢になります。

Windows特有の仕様

Windowsの規約に沿ったルールではありますが、Unixの感覚では理解しづらい以下のような特徴があります。

  • デーモン起動は「サービス」の設定で行なう
    • 自動起動設定のほか、sshd_config定変更後の再起動も可能
  • 外部アクセスには「ファイアーウォール」の設定が必要
  • ssd_configは、%PROGRAMDATA%/ssh/ssd_configにある
    • エクスプローラに%PROGRAMDATA%を入力すると該当フォルダが開く。一度起動すると関連ファイルを生成する
  • Adminグループに属すユーザー専用のauthorized_keysファイルが独特のPATHとして明示されている
    • ssd_config末尾のMach Group administorsに従ってファイルを置くか、このconfigを無効にする必要がある
  • ~/.ssh/authorized_keysファイルはSYSTEMグループのread権限も必要
    • サービス起動したsshdが読める必要がある

メモ帳の問題

Windowsのconfig編集の標準的な手段が不明であるため、メモ帳で編集するとなると以下のような注意点があります。

  • sshd_configの編集には管理者権限が必要
    • あらかじめメモ帳を右クリックして「管理者権限で実行」により起動する必要がある。その後、「開く」で編集
  • メモ帳が拡張子.txtを自動付加する
    • Explorerがデフォルトで拡張子編集できないので、コマンドプロンプトのmvコマンドでファイル名変更する

その他

サービス起動の場合ログを確認しづらいため、セットアップ段階ではPowerShellを「管理者権限で実行」のうえsshd -dで起動するとエラーを特定しやすくなります。
ただし、サービス起動と実行権限が異なるため、authorized_keysのファイルパーミッション(SYSTEMユーザーのアクセス権)は最終構成と異なる点に注意が必要です。

認証方法はデフォルトではパスワード認証が有効になっています。鍵認証などの設定はUnix系と同様です。用途に合わせて適切に設定します。ポート番号も変更できます。

sshdを利用するとリモートデスクトップもトンネルできるため、クライアントしだいでVPNレスのリモート接続が可能になります。たとえばLinuxクライアントの RemminaにはSSHトンネルの設定があり、接続時の追加手順なくSSH経路を利用できます。
SSHはUDPを転送しませんが、回線品質しだいでとくにロスなくスムーズに動作しています。

なお、この構成はLANアクセスの範囲であり、リモートアクセスするにはIPマスカレードなどのネットワーク機器設定は別途必要になるでしょう。この設定でlistenするポート(デフォルトは22番)にリクエストが到達する構成であればリモートアクセス可能になります。

中馬崇尋
Chuma Takahiro