これによってWindows Serverに対してSSHでリモートから接続し、CLIによる操作や管理ができるようになる。サーバ構築作業が効率化できそうなので、非常に便利そうな機能追加であると感じた。
しかし、本当にSSH接続でWindows Serverをコマンド操作でできるか不安もあるので、実際にWindows Server 2019をインストールして、OpenSSHの機能を有効にしてみることにした。
SSHクライアントの設定
SSHクライアントはデフォルトでインストール済みであり、特に設定不要で使える。コマンドプロンプトでsshとたたけば、問題なく使える。PS C:\> ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]
なお、SSHクライアントのインストール状況は、「Windowsの設定」→「アプリと機能」→「オプション機能の管理」から「OpenSSHクライアント」の項目を見ることで確認できる。SSHサーバの設定
SSHサーバはデフォルトでは有効になっていないので、「Windowsの設定」→「アプリと機能」→「オプション機能の管理」から「OpenSSHサーバー」をインストールする。インストール完了すると、サービスの画面に「OpenSSH SSH Server」というサービスが登録される。
ただし、OpenSSH SSH Serverは自動で起動しないため、サービスを「開始」し、必要に応じて「スタートアップの種類」を自動起動する設定に変更しておこう。
サービス開始後にサーバの待ち受けポートを確認してみる。以下の通り、SSHで使用する22番ポートで待ち受けしていることが確認できる。
PS C:\> netstat -nao | findstr :22
  TCP         0.0.0.0:22             0.0.0.0:0              LISTENING       2316
  TCP         [::]:22                [::]:0                 LISTENING       2316
Windowsファイアウォールも、SSHサーバインストール時に受信のルールを追加してくれるため、特別に設定は不要となる。Windows Server 2019にSSH接続してみる
まずは、Windows Server 2019にインストールされているSSHクライアントを使って自分自身に接続してみると、問題なく接続できた。PS C:\> ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:dP/b/2J+X/u8z6LLN4iU7zRYgpP7RhKBxl8SfdplwD8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
intrat\tadmin@localhost's password:
Microsoft Windows [Version 10.0.17763.253]
(c) 2018 Microsoft Corporation. All rights reserved.
intrat\tadmin@T1082W219 C:\Users\tadmin>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 8A39-0094 です
 C:\Users\tadmin のディレクトリ
2019/06/05  14:49    <DIR>          .
2019/06/05  14:49    <DIR>          ..
2019/05/23  15:31    <DIR>          .cisco
2019/06/05  14:49    <DIR>          .ssh
2019/05/04  16:41    <DIR>          3D Objects
2019/05/04  16:41    <DIR>          Contacts
2019/06/05  14:47    <DIR>          Desktop
2019/05/12  06:30    <DIR>          Documents
2019/05/05  08:40    <DIR>          Downloads
2019/05/04  16:41    <DIR>          Favorites
2019/05/04  16:41    <DIR>          Links
2019/05/04  16:41    <DIR>          Music
2019/05/19  14:52    <DIR>          Pictures
2019/05/04  16:41    <DIR>          Saved Games
2019/05/04  16:41    <DIR>          Searches
2019/05/04  16:41    <DIR>          Videos
               0 個のファイル                   0 バイト
              16 個のディレクトリ  27,887,628,288 バイトの空き領域
intrat\tadmin@T1082W219 C:\Users\tadmin>exit
Connection to localhost closed.
Tera Termからでも同様にSSH接続できた。Tera Term上で出力するコマンドプロンプトの画面は新鮮に感じる。SSH接続後にPowerShellを実行
コマンドプロンプトからpowershellコマンドを打つと、問題なくPowerShellを実行できることも確認できた。これは、Windows Serverのほぼすべての設定作業がTera TermなどのSSHクライアントソフトを使ってできるということと同義となる。Tera Termであればログ取得を行いながら作業ができたりするので、これは非常に便利ではなかろうか。。。intrat\tadmin@T1082W219 C:\Users\tadmin>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\Users\tadmin> Get-ComputerInfo
WindowsBuildLabEx                                       : 17763.1.amd64fre.rs5_release.180914-1434
WindowsCurrentVersion                                   : 6.3
WindowsEditionId                                        : ServerStandardEval
WindowsInstallationType                                 : Server
WindowsInstallDateFromRegistry                          : 2019/05/03 22:30:57
WindowsProductId                                        : 00431-10000-00000-AA047
WindowsProductName                                      : Windows Server 2019 Standard Evaluation
~(以下略)~
SSH接続時のログオン・ログオフのログを確認
最後に念のため、SSH接続時のログオン・ログオフの情報が出力されるかを確認してみる。イベントビューアーからセキュリティイベントログを確認してみると、以下の通り、ログオン・ログオフのログが出力されていることが確認できた。ログオン時は、
プロセス名:C:\Windows\System32\OpenSSH\sshd.exeと出力されるのでSSH接続されたことがわかるのだが、ログオフ時は特にSSHというログが出力されないため、ログオン タイプ:8から判断する必要がありそうだ。ログオン時のセキュリティイベントログ
アカウントが正常にログオンしました。
サブジェクト:
 セキュリティ ID:  SYSTEM
 アカウント名:  T1082W219$
 アカウント ドメイン:  INTRAT
 ログオン ID:  0x3E7
ログオン情報:
 ログオン タイプ:  8
 制限付き管理モード: -
 仮想アカウント:  いいえ
 昇格されたトークン:  はい
偽装レベル:  偽装
新しいログオン:
 セキュリティ ID:  INTRAT\tadmin
 アカウント名:  tadmin
 アカウント ドメイン:  INTRAT
 ログオン ID:  0xC8547A8
 リンクされたログオン ID:  0x0
 ネットワーク アカウント名: -
 ネットワーク アカウント ドメイン: -
 ログオン GUID:  {f0653b97-46be-db5c-a76b-a6e54f340f33}
プロセス情報:
 プロセス ID:  0x6b0
 プロセス名:  C:\Windows\System32\OpenSSH\sshd.exe
~(以下略)~
ログオフ時のセキュリティイベントログ
アカウントがログオフしました。
サブジェクト:
 セキュリティ ID:  INTRAT\tadmin
 アカウント名:  tadmin
 アカウント ドメイン:  INTRAT
 ログオン ID:  0xE75A8D2
ログオン タイプ:   8
このイベントは、ログオン セッションが破棄された場合に生成されます。これは、ログオン ID の値を使用して、ログオン イベントに関連付けられる場合があります。ログオン ID は、同一コンピューターが次に再起動するまでの間のみ一意です。





