OracleLinux | WindowsバッチでOracleLinuxをリモートシャットダウンする

OracleLinux | WindowsバッチでOracleLinuxをリモートシャットダウンする

みなさん、こんにちは。

今回は「WindowsバッチでOracleLinuxをリモートシャットダウンする」方法を検証します。

環境としては VirtualBoxを用いてOracleLinux環境を準備し、そちらを遠隔シャットダウンします。

仮想環境の設定方法は以下を参照ください ↓

SSHで接続してみる

以下のような構成があったとして、Windowsから VirtualBox上のOracleLinux にSSH接続してみます。

コマンドプロンプトにて

ssh 192.168.10.15

と入力して接続することができます。

【手動】SSH経由でOracleLinuxをシャットダウンしてみる

上記の構成のうち、同一ネットワーク上のOracleLinuxをシャットダウンしてみます。

suにした状態で

shutdown -P now

を実行します。

Virtual Box上のOracle Linuxがシャットダウンされれば成功です。

【自動化】バッチを用いた自動化(sudoersの編集)

上記一連の流れをバッチ化します。

自動化するためには、SSH接続後にshutdownコマンドを実行する必要があります。

① ssh miseru_it@192.168.10.15
② <<ssh接続用のパスワードを入力>>
③ sudo shutdown -P now
④ <<su用のパスワードを入力>>

ただ、上記②のように「パスワード入力」が発生するため、この部分を解決する必要があります。

②SSH接続時のパスワード不要化:秘密鍵と公開鍵を準備

パスワード入力無しでssh接続するために、「秘密鍵」と「公開鍵」を準備します。

秘密鍵は 接続元(今回でいうとWindows)、公開鍵は 接続先(今回でいうと Oracle)にそれぞれ設置します。

1)公開鍵の作成

Windows側で以下のコマンドを実行します。

ssh-keygen -t rsa

これにより、ユーザフォルダの「/.ssh」内に「id_rsa(秘密鍵)」と「id_rsa.pub(公開鍵)」の2つが生成されます。

2)公開鍵のコピー

接続先端末側(OracleLinux)にssh接続し、先ほど作成した鍵をコピーします。

scp C:\Users\xxx\.ssh\id_rsa.pub miseru_it@192.168.10.15:~/.ssh/authorized_keys

3)鍵を利用してSSH接続する

以下のように秘密鍵のパスを記載することで、パスワード入力不要で接続できるようになります。

ssh -i C:\Users\xxx\.ssh\id_rsa <username>@<server_address>

これで「パスフレーズ不要」で接続できるようになりました。

④shutdown実行時のパスワード不要化:/etc/sudoers の編集

次に「shutdown」する際に必要なsudoのパスワード不要設定を行います。

sudo権限を設定するために、「sudoers」を編集します。

sudoers(スードアーズ)は、UnixやUnix系のオペレーティングシステムで、一般ユーザーに対して特権(ルート権限)を付与するための設定ファイルです。

一般的には、管理者やシステム管理者が特定のユーザーに一部のシステムコマンドやタスクを実行する権限を与えるために使用されます。

※ sudoersファイルは、誤った設定を行うとセキュリティの問題が発生する可能性があるため、注意深く管理する必要があります。

sudoersの編集方法

通常、このファイルを編集する際には、visudoというコマンドを使用することが推奨されます。これにより、構文エラーや誤った設定を防ぐことができます。

visudoコマンドを実行する

sudoersファイルを編集する際には、通常はvisudoコマンドを使用します。

このコマンドは、編集画面を開きながらファイルを編集するためのものです。ターミナルで以下のコマンドを実行します。

sudo visudo

ファイルの編集

visudoコマンドを実行すると、sudoersファイルが開かれるので、権限情報を追記します。

末尾の行に書く必要があります。

基本的な構文は以下のようになります。

user_name ALL=(ALL:ALL) command_to_run
  • user_name: 特権を付与したいユーザー名を指定します。
  • ALL: どのホストからでもアクセスを許可します。特定のホストを指定することも可能です。
  • =(ALL:ALL): コマンドをどのユーザーに対して、どのホストからどの権限で実行できるかを指定します。ここでは一般的なALLを使用していますが、詳細な制御も可能です。
  • command_to_run: 実行を許可するコマンドやプログラムを指定します。

これに従い、以下のように追記します。

リモート接続するユーザ名が「miseru_it」だった場合

miseru_it ALL=NOPASSWD: /sbin/shutdown
  • miseru_it: 対象のユーザー名です。
  • NOPASSWD:: パスワードの入力を求めずにコマンドを実行できるように指定しています。
  • /sbin/shutdown: 実行を許可するコマンド(ここではシャットダウンコマンド)を指定しています。

これによって、「miseru_itはいずれの端末からもsshでログインできて、/sbin/shutdown を実行できる」ようになります。

変更の適用

sudoersファイルを編集した後、変更が適用されるために一般的にはセッションを再起動するか、一部のシステムでsudoersの変更を即座に適用するためのコマンド(例:sudo -k)を実行することが必要です。

動作検証

Windowsのコマンドプロンプトからsshを実行します。

※ ssh接続側は「192.168.10.15」と置いてます。

ssh miseru_it@192.168.10.15 "sudo shutdown -P now"

これで「パスワード無し&リモートシャットダウン」を実現することができました。

情シスの方々には有益な設定ですが、くれぐれもセキュリティにはお気を付けください。

ではまた!

本日のAmazonおすすめ_Top10

2024-04-28 10:26:27時点