ニフクラ ブログ

ニフクラやクラウドの技術について、エンジニアが語るブログです。

起動時スクリプトを用いたサーバーOS設定 part1 ~サーバーOS_アカウントパスワード設定編~

こんにちは、ニフティクラウドテクニカルアカウントチームです。 今回はニフティクラウドのサーバー起動時スクリプトを使って各OS(Windows、Linux)のアカウントパスワードの設定/変更を行ってみます。サーバー起動時スクリプトはコントロールパネルやニフティクラウドAPIからスクリプトを送り込み、OS起動時に実行することができる機能です。

はじめに

ニフティクラウドにおいて、サーバー作成時に設定されるアカウント情報は以下の通りです。

サーバー作成時の指定 root/administratorの状態
Linux SSHキーの作成 root:パスワード未設定の状態
Windows 管理者アカウント/パスワードの指定 administrator:OS上で無効化

ニフティクラウドでサーバーを構築/運用する上で以下のような状況で困ったことはありませんか?
* サーバー構築後アカウントのパスワードを忘却してしまった
* LinuxOSでコンソールを開いたがrootのパスワードを設定していなかった
* 初期構築時にいちいちサーバーにログインしてアカウントのパスワード設定するなんて面倒

上記のような状況に陥ってもサーバー起動時スクリプトを利用すれば解決が可能です。 今回の検証ではWindowsのadministratorのパスワード変更、Linuxのrootのパスワード設定(変更)を実施しています。

前提条件

本ブログ記事は、以下の知識がある方を前提として記述しています。

  • ニフティクラウドの基本的なコントロールパネルの操作が出来る方
    (サーバー作成、ネットワーク構築など)
  • 基本的なサーバーOS構築ができる方

実施対象OS

今回アカウントのパスワード設定/変更を行うOS情報を記載します。

Linux CentOS 6.7
CentOS 7.1
Windows Microsoft Windows Server 2008 R2
Microsoft Windows Server 2012 R2

Linux編

rootパスワードの設定

以下の手順でLinuxのrootパスワードの設定を行います。

  • サーバーを作成します。
  • ニフティクラウドのコントロールパネルにログインし、左メニューから「サーバー」を選択します。対象サーバーの「サーバー起動」のボタンを押下します。 (起動スクリプトの指定は、「再起動」のボタンからでも指定が可能。)

  • 「サーバー起動」の画面が表示されます。
  • スクリプトの項目で「使用する」にチェックします。

  • テキストボックスに以下の内容を入力します。
#!/bin/bash
ROOT_PASSWORD='任意のパスワード'
SALT=$(/usr/bin/uuidgen| /usr/bin/tr -d '-')
/usr/sbin/usermod -p $(/usr/bin/perl -e 'print crypt(${ARGV[0]}, ${ARGV[1]})' ${ROOT_PASSWORD} ${SALT}) root

ここで「任意のパスワード」に関しては設定を行いたい任意のパスワードを設定するようにします。

  • 「起動する」にチェックを入れて、「OK」を押下します。

サーバーが起動したことを確認して実際にログイン確認を行っていきます。

確認_CentOS 6.7

CentOS 6.7でパスワードが正常に設定されているかログイン確認を行います。

  • 対象サーバー(ScriptCent01)のコンソール起動を行います。

  • ログインユーザーにrootを指定して Password:に起動時スクリプトで指定したパスワードを指定して入力します。

  • 正常に起動時スクリプトで設定したパスワードでログインすることが出来ました。

確認_CentOS 7.1

CentOS 7.1でパスワードが正常に設定されているかログイン確認を行います。

  • 対象サーバー(ScriptCent02)のコンソール起動を行います。

  • ログインユーザーにrootを指定して Password:に起動時スクリプトで指定したパスワードを指定して入力します。

  • 正常に起動時スクリプトで設定したパスワードでログインすることが出来ました。

Windows編

administratorパスワードの設定

Windowsのadministratorのパスワードの設定を行います。 ※今回は事前にadministratorユーザーの有効化をOS上より行っています。実行の際は任意のユーザーでも問題ありません。

  • サーバーを作成しておきます。
  • ニフティクラウドのコントロールパネルにログインし、左メニューから「サーバー」を選択します。対象サーバーの「サーバー起動」のボタンを押下します。 (起動スクリプトの指定は、「再起動」のボタンからでも指定が可能。)

  • 「サーバー起動」の画面が表示されます。
  • スクリプトの項目で「使用する」にチェックします。

  • テキストボックスに以下の内容を入力します。
@REM
powershell -Command "net user アカウント名 任意のパスワード"

ここで「アカウント名」、「任意のパスワード」に関しては設定を行いたいアカウント名と任意のパスワードを入力するようにします。

  • 「起動する」にチェックを入れて、「OK」を押下します。

サーバーが起動したことを確認したら、実際にログイン確認を行います。

確認_Windows Server 2008 R2

Windows Server 2008 R2でパスワードが正常に設定されているかログイン確認を行います。

  • 対象サーバー(ScriptWin01)にリモートデスクトップ接続を行います。

null

  • スクリプトで指定したアカウント名、パスワードを入力し、「OK」を押下します。

null

  • 正常に起動時スクリプトで設定したアカウント/パスワードでログインすることが出来ました。

確認_Windows Server 2012 R2

Windows Server 2012 R2でパスワードが正常に設定されているかログイン確認を行います。

  • 対象サーバー(ScriptWin02)にリモートデスクトップ接続を行います。

null

  • スクリプトで指定したアカウント名、パスワードを入力し、「OK」を押下します。

null

  • 起動時スクリプトで設定したアカウント/パスワードで、正常にログインすることが出来ました。

まとめ

今回は、起動時スクリプトでサーバーOSのパスワード設定を行ってみました。 初期構築等の簡略化にも使えますし、サーバー運用者がいなくなってアカウントのパスワード分からない!とかいう場合でも利用できそうです。 ほかにもいろいろ応用が出来そうですね。ということで次は「サーバーOSのIPアドレス/ホスト名変更」あたりを実施してみたいと考えています。