2020年にWindowsの遠隔操作方法として新たに追加されたものとは？


# きっかけ

昨今、COVID-19の影響で、リモートワークが流行っています。
「リモートワークって遠隔操作ですよね。」ってことで遠隔操作の記事です。

# 概要

Windowsの遠隔操作技術の関連をまとめた記事です。
そのため、この記事は技術レベルゼロな内容です。
「遠隔操作したいけど、何があるんだろ」って人向けです。

結論としてタイトルの答えはSSHです。

この記事を読めば、遠隔キッティングや、遠隔サポート、LAN内PCの管理などを行うために知っておくと便利な、遠隔操作ツールを知ることができます。

「遠隔操作はブラックハッカーが行うもの」のような、間違った印象がついているかもしれません。
しかしそうではありません。遠隔操作と犯罪に因果関係はありません。道具を手にした人間次第で良くも悪くもなるものです。

# Windows Admin Center

[Windows Admin Center](https://docs.microsoft.com/ja-jp/windows-server/manage/windows-admin-center/overview) は、Windows製品を管理するための無償ツールです。
PS-Remotingで接続できるPCを、Webコンソールの管理画面に追加することができます。

『Windows 管理ツール』で管理できる内容、タスクマネージャーで見れるグラフ、コントロールパネルから見れる情報などが、クライアントOS上と同じ見た目で一元管理できます。PowerShellやリモートデスクトップの機能を内蔵しているのも魅力の一つです。

クライアント側はWindowsに既存のものしか利用しないので、
エージェントソフトウェアインストールの手間も省けます。

# PS-Remoting

Powershellの機能です。

- PowerShellで遠隔操作の準備
  - <https://qiita.com/arachan@github/items/707ba05befb2d5a5a81a>
  - わかりやすかったです。
- PS-Remotingのリファレンス
  - <https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/enable-psremoting?view=powershell-7>
  - 使い方の詳細を知りたいときはこちらを参照してください。
- 公式のドキュメント
  - <https://docs.microsoft.com/ja-jp/powershell/scripting/learn/remoting/running-remote-commands?view=powershell-7>
  - PowerShell Core では、WMI、WS-Management、および SSH リモート処理をサポートしているらしいです。

# PsExec

[sysinternals](https://docs.microsoft.com/ja-jp/sysinternals/)に含まれる無償ツールです。
マイクロソフトの中の人である、[Mark](https://docs.microsoft.com/ja-jp/archive/blogs/markrussinovich/)さんが開発したらしいです。
[ダウンロード](https://docs.microsoft.com/ja-jp/sysinternals/downloads/)して使用することもできますし、

```posh:
choco install sysinternals
```

として、Chocolateyを利用したインストールも可能です。
[PsExecを使用した上級テクニック](https://troushoo.blog.fc2.com/blog-entry-76.html)があったりするので、
OS関連のブログを書く人とかは重宝しそうです。

# SSH

やはり、一番お勧めしたいのがSSHです。Unix系・Linux系では、あって当たり前のものですが、Windowsでは最近になって公式に機能が追加されたようです。これにより、どのOSでも同じ方法でアクセスできるので手順の標準化ができます。

- [Windows Server 2019 および Windows 10 用 OpenSSH のインストール](https://docs.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse)

ビルド1809から Windowsの機能として組み込まれています。
そのため、Windowsの設定アプリから、インストール・有効化することができます。

![2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/f89348b1-b22c-b635-a7d3-ff4a92130625.gif)

また、PowerShellコマンドを使って有効化することもできます。
ということは、後述のインフラ構成管理ツールを使用してSSHをインストールすることもできたりします。

インストール用スクリプトを書いたのでほしい人は使ってください。ライセンスフリーです。
https://github.com/ShortArrow/MakeSshdOnWin10

ところが、以前に[Github](https://github.com/PowerShell/OpenSSH-Portable)からダウンロードしてインストールしてしまった人は、
この手順が使えないため、一度アンインストールするなど特別な措置が必要です。

# インフラ構成管理ツール

Ansible Puppet Chef などのインフラ構成管理ツールを使用すれば、リモートで設定を変更することができます。
Infrastructure as Code なので、遠隔操作がコンセプトではないですが使えなくはないです。

より広い意味では、Active Directory や Group Policy もこの項目に当てあはまるでしょう。

- AnsibleとChefとPuppetの比較
  - <https://macruby.info/windows/ansible-chef-puppet-compare.html>

いずれも無償版・有償版があります。いざ導入するとなって、有償版でサポートを受けるのか、コミュニティー版で頑張るのか状況に応じた選択が必要です。

- Ansible
  - 売り
    - エージェントレス
      - Windowsに標準でSSHサーバーが実装されたことにより、このエージェントレス機能に良い影響が出ているようです。
  - 公式サイト
    - <https://www.ansible.com/>
  - 公式ドキュメント
    - <https://docs.ansible.com/>
- Chef
  - 公式サイト
    - <https://www.chef.io/>
  - 公式ドキュメント
    - <https://docs.chef.io/>
- Puppet
  - 公式サイト
    - <https://puppet.com/>
  - 公式ドキュメント
    - <https://puppet.com/docs/>

# 各種リモートデスクトップ接続

やはりGUIでないと難しい作業もあるでしょう。そんな時はリモートデスクトップの出番です。

- Chrome リモート デスクトップ
  - OSに依存しないクロスプラットフォーム。
  - <https://remotedesktop.google.com/home>
- Windows リモート デスクトップ
  - Windows公式
  - <https://support.microsoft.com/ja-jp/help/4028379/windows-10-how-to-use-remote-desktop>
- 別のMacの画面を共有する
  - Macなので趣旨から外れますが参考までに
  - Mac公式
  - <https://support.apple.com/ja-jp/guide/mac-help/mh14066/10.15/mac/10.15>
- VNC
  - 派生が大量に存在するので選ぶのが大変。
  - OSに依存しないクロスプラットフォーム。
  - <https://ja.wikipedia.org/wiki/Virtual_Network_Computing>
- シン・テレワークシステム
  - Windows用
  - Wake On LAN もできます
  - 登大遊さんが中心となって、NTTとIPAが共同で発表したサービス。
  - [NTT 東日本 - IPA 「シン・テレワークシステム」   緊急構築・無償開放・配布ページ](https://telework.cyber.ipa.go.jp/)
- TeamViewer
- CACHATTO
- ISL Online
- Splashtop
- Citrix Receiver
- RemoteView
- AnyDesk
- MagicConnect

# Wake On LAN

- Wake on Lan で Windows 10 の PC を遠隔で起動する
  - 遠隔操作する端末が起動していない場合にはこういうことも必要です。
  - LANポートが常時待機している状態に設定しておいて、起動コマンドを送信します。
  - <https://qiita.com/gam0022/items/4c2a3fdc29ac4977b51c>
- デメリット
  - 設定方法がUEFI/BIOSに依存するため、ドキュメント化がしづらく、ネット上にナレッジが少ない。

# 気をつけること

いずれの方法を選択した場合においても、ファイアウォールの設定を行うことが大切です。間違っても、「面倒だからファイアウォールをすべてオフにしてしまおう」は無しです。ポートごとに適切なアクセス制限を行いましょう。また、どこからアクセスできるのかという制限を設けることも必要に応じて行いましょう。公開鍵認証などと組み合わせることもお忘れなく。

**Excelsior!**