この記事は、ニフクラブログで2017-05-26に公開された記事を移転したものです。
こんにちは、ニフティクラウドテクニカルアカウントチームです。 今回はニフティクラウドのサーバー起動時スクリプトを使って各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)にリモートデスクトップ接続を行います。
- スクリプトで指定したアカウント名、パスワードを入力し、「OK」を押下します。
- 正常に起動時スクリプトで設定したアカウント/パスワードでログインすることが出来ました。
確認_Windows Server 2012 R2
Windows Server 2012 R2でパスワードが正常に設定されているかログイン確認を行います。
- 対象サーバー(ScriptWin02)にリモートデスクトップ接続を行います。
- スクリプトで指定したアカウント名、パスワードを入力し、「OK」を押下します。
- 起動時スクリプトで設定したアカウント/パスワードで、正常にログインすることが出来ました。
まとめ
今回は、起動時スクリプトでサーバーOSのパスワード設定を行ってみました。 初期構築等の簡略化にも使えますし、サーバー運用者がいなくなってアカウントのパスワード分からない!とかいう場合でも利用できそうです。 ほかにもいろいろ応用が出来そうですね。ということで次は「サーバーOSのIPアドレス/ホスト名変更」あたりを実施してみたいと考えています。