はじめに
本サイトの記事は主にWindows 10のPC(dynabook R732/37HK(ストレージはSanDisk製のSSDへ換装済みです。))↓
(なお、dynabookの現行の機種などについてはこちらを、SanDisk製のSSDの現行の機種などについてはこちらをご参照ください。)
及びスマホ(開封の儀の動画です)↓
(Zenfoneの現行の機種などについてはこちらを参照ください。)
を使って書いています。
スマホは基本的に肌身離さず持ち歩いていますし、大きさも満員電車の中でも扱える大きさですので、電源を切れないということは基本的にありません。
そこで、スマホからWindows 10のPCをシャットダウンできるようにセットアップを行うことにしました。
Motivation & Survey
Windows 10のPCは自宅のリビングのPCスペースに置いたままで、移動させることは基本的にありません。Windows 10のPCをシャットダウンする方法はざっと調べた感じでは大きく分類すると以下の2通りの方法があるようです。
- 端末の前に座ってWindowsアイコンをクリックしてから表示されるポップアップメニューを「電源」→「シャットダウン」とするか、[Ctrl]+[Alt]+[Del]キーを押してシャットダウンボタンを押すといったようなキーボード、マウスまたは画面のタッチ操作並びにそれらの組み合わせにより操作する方法。
- shutdownコマンドにshutdownしたいPCのIPアドレスを指定する方法。
一見、上記の方法の何が問題なのかと思われるかもしれませんが、自宅においてWindows 10のPCをシャットダウンする作業は一日の最後または最後の方に行われる作業でして、すでに疲労困憊していて端末の前に座ることができなくなっていることも少なくありません。
ぶっちゃけ、早く寝たいと思っていることが多いタイミングでPCをシャットダウンせねばならないわけです。
また、自宅のPCでWindows 10がインストールされているPCは上記のPC以外には嫁様のHP spectre x360しかなく、このPCも前述のPCスペースにあるので、そのPCにたどり着いてshutdownコマンドを実行するのは対応策としては考えにくいものになります。
こうなると、「スマホから電源を切れるようにすればいいじゃない。ソファとかベッドで寝転んでいても電源が切れるようになるし…」という方向性を検討することになるかと思います。
しかし、スマホからはshutdownコマンドは直接使えないため、Windows 10のPCを何らかの形でログイン可能な状態にしてやる必要があります。
スポンサーリンク
PCをログイン可能な状態にするとなると、本サイトの管理人たるpanda的にはsshd一択になってしまうわけですが、sshdをWindowsにインストールするとなると、Cygwinとかのインストール及び関連する設定が必要そうで、(特にサービスの開始/終了について設定関連のところが)ちょっと面倒そうだな… と思っていたところ、Windows 10 Fall Creators Update(バージョン 1709)において公式にOpenSSHが使えるようになったことについ先ほど(2018年10月現在)気が付きました。
そこで、こいつを使ってOpenSSHのサーバ(sshdサーバ)をWindows 10のPCで使用できるように設定しておき、sshでWindows 10のPCでログインしてからshutdownコマンドを実行することにより、Windows 10のPCをシャットダウンさせることを可能にする環境を構築することにしました。
ここまで相当に長くなりましたが、次節以降Windows 10のPCでOpenSSHのサーバ(sshdサーバ)を稼働させる方法及び実際にWindows 10のPCをシャットダウンさせる手順について書いていきます。
OpenSSHサーバをインストールする。
Windows 10で公式に使用できるOpenSSHサーバは以下の手順でインストールできます。なお、Windows 10のユーザインタフェースはUpdateごとに大幅に変更される可能性がありますので、参考にされる際には参考にされる時点におけるユーザインタフェースに即して適宜読み替えていだたけると幸いです。
- Windowsアイコンをクリックしてから表示されるポップアップメニューから「設定」(歯車のアイコンです。)を選択します。
- すると、以下のウィンドウが表示されますので、「アプリ」(赤矢印)を選択します。
- ウィンドウの表示が以下のように切り替わりますので、「オプション機能の管理」(赤矢印)をクリックします。
- ウィンドウの表示が以下のように切り替わりますので、「機能の追加」(赤矢印)をクリックします。
- ウィンドウの表示が以下のように切り替わりますので、「OpenSSHサーバー」(赤矢印)をクリックします。
- 「OpenSSHサーバー」の部分の表示が以下のように切り替わりますので、「インストール」(赤矢印)をクリックします。
- OpenSSHサーバーのインストールは音もなく行われます。インストールが完了すると、「オプション機能の管理」画面に以下のようにOpenSSHサーバが表示されます(赤矢印)。
なお、上図によると「OpenSSH」クライアントはインストールされているようですので、ここまでの手順でOpenSSHのサーバとクライアントがインストールされたことになります。
OpenSSHサーバを他のPCから使用できるようにするための設定。
OpenSSHサーバのインストールができたら、以下の手順で他のPCから使用できるようにするための設定を行います。
- PowerShellを管理者権限で起動して以下のコマンドを実行し、TCPの22番ポートを他のPCから使用できるように設定します。
> New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
- 管理者権限で以下のコマンドを実行し、sshdの設定ファイルをコピーします(コピー先のディレクトリの”Program”と”Data”の間にはスペースは入りません。以下同じです。)。
> copy c:\Windows\System32\OpenSSH\sshd_config_default c:\ProgramData\ssh\sshd_config
- c:\ProgramData\ssh\sshd_configを適当なエディタを用いて管理者権限で開き、ファイルの末尾(または末尾付近)に以下の行が含まれていたらコメントアウトします。コメントアウトしたら、同じファイル名で保存します。
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keysスポンサーリンク - 管理者権限で以下のコマンドを実行し、OpenSSHサーバのサービスを起動します。
> Start-Service sshd
- 管理者権限で以下のコマンドを実行し、Windowsの起動時にsshdが起動するように設定します。
> Set-Service sshd -StartupType Automatic
公開鍵をインポートする。
最後に公開鍵をインポートします。今回のセットアップでは、スマホにインストールしたTermuxやVXConnectBot等で作成した公開鍵(以下、単に「公開鍵」と書きます。)をインポートします。
公開鍵のインポートは以下の手順で行います。
- 公開鍵をWindows 10のPCにコピーします。
- ホームディレクトリ(通常はc:\Users\<user名>)の下の.sshディレクトリの下にauthorized_keysというファイルが存在する場合には、以下のコマンドを実行し、authorized_keysファイルに公開鍵を追加します。
> more <公開鍵のファイル名> >> authorized_keys
また、authorized_keysというファイルが存在しない場合には、以下のコマンドを実行し、authorized_keysファイルを作成します。> copy <公開鍵のファイル名> authorized_keys - authorized_keysファイルにEveryoneに対する読み取り権限が設定されている場合には、PowerShellを起動してコマンドプロンプトより以下のコマンドを実行して、Everyoneに対する読み取り権限を削除します。
PS c:\Users\pandanote\.ssh> icacls authorized_keys /remove Everyoneスポンサーリンク
参考: authorized_keysファイルの権限の設定の状況の確認の方法
authorized_keysファイルの権限の設定の状況は以下のコマンドをPowerShellのコマンドプロンプトから以下のコマンドを実行すると確認できます。
実際にWindows 10のPCをシャットダウンさせてみる。
これで、スマホからWindows 10のPCをシャットダウンさせる準備が整いましたので、以下の手順を実行するとスマホからWindows 10のPCをシャットダウンさせることができます。
- スマホで動かせる適当なSSHクライアント(この記事を最初に書いた時点ではVXConnectBotを使っていましたが、その後ssh-rsaが非推奨になるとのことだったので、Termiusに乗り換えました。)を起動し、Windows 10のPCのsshd経由でログインします。すると、以下のようなコマンドプロンプトがスマホ上に表示されます(なお、以下の図はスマホの画面のうち上部のみを切り出したうえで、画像を一部加工したものです)。
- 手順1で表示されたコマンドプロンプトから、以下のコマンドを入力します(コマンドラインオプションがLinuxとは異なるのでわかりにくいです)。
> shutdown /s /t 0
- Windows 10のPCがshutdownされます。
【おまけ】休止状態にしてみる。
PCを休止状態にしたい場合には前節のshutdownコマンドのかわりに、
を実行すると、休止状態とすることができます。
まとめ
ここまでの手順で、Windows 10のPCをスマホからシャットダウンさせることができます。かなり新鮮なシャットダウン体験が楽しめます。(`・ω・´)
WindowsにsshdのようなLinux系のサーバプログラムをインストールするとなると、Cygwin等を使ってWindows上にLinuxのような(開発及び)実行環境を作ってから、必要なサーバプログラムをWindowsのサービスとして起動できるよう登録して… という手順で作業をしていくことになりますが、このOpenSSHについてはWindowsにいい感じに統合されていて使いやすいと思います。
なお、この記事では触れませんでしたが、OpenSSHクライアントの設定として、エドワーズ曲線(ed25519)を用いた公開鍵と秘密鍵のペアを作成してみました。これは簡単に作成できますので、興味のある方はその筋の解説記事を参照してみてください。
PuTTYについては今まで10年くらい(※この記事を最初に書いた時点(2018年10月)の情報です。)にわたってお世話になりましたが、sshコマンドを実行するときはキー入力で実行した方が効率が良いことの方が多いと感じますので、今後は(Microsoftが独自開発のUIみたいなやつをOpenSSHに統合したりとかしない限り、)Windows 10のOpenSSHを使うことが増えそうです。
そして、今までよりも充実したsystem shutdown lifeをenjoyすることができると思いますが、Windows 10のshutdownコマンドのコマンドラインオプションは覚えにくいですね。(´・ω・`)
この記事は以上です。