2019年6月12日水曜日

Windows Server 2019で標準サポートされた「OpenSSH」がすごく便利そうだった話

Windows Server 2019およびWindows 10 1809になってから、OpenSSHが標準でサポートされるようになった。

これによって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 は、同一コンピューターが次に再起動するまでの間のみ一意です。

0 件のコメント:

コメントを投稿

人気の投稿