はじめに
趣味で試そうと初期費用無料時に契約していたさくらのVPSをかなり放置していたのですが、今回ちゃんと使うことになったため、再構築をした際の手順をメモしました。
サーバー構築初心者が書いた備忘録になるため、当方は本記事を参考にセットアップしたことによって被った損害・損失に対し、いかなる場合でも一切の責任を負いませんのでご了承ください。
あくまでも自己責任でお願いします。
作業環境
- ローカル
- OS X Yosemite 10.10.5 標準ターミナル
- サーバー
- さくらのVPS メモリ2GBプラン
設定に入る前に
ホスト名の設定はネームサーバ利用申請方法とDNS逆引きレコードを変更するなどを参照し、事前に設定しておきましょう。
また、今回はさくらのVPS 標準OSで構築していくため、OSセットアップ情報を確認します。
標準OSでは日本語のグループパッケージなどのインストールや簡単な設定がされているため、今回の環境構築ではタイムゾーンやNTPの設定は飛ばします。
契約直後ならそのまま、OSを再インストールするならコントロールパネルから標準OSインストールを実行してから次に進みましょう。
VPSにログイン
ローカルのターミナルからssh
コマンドで、root
ユーザーでログインします。
サーバーのIPアドレス、管理ユーザーの初期パスワードは仮登録完了のお知らせメールに記載されています。
ローカルで実行します
ssh root@xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
の部分をサーバーのIPアドレスに差し替えてください。
以降のサーバーのIPアドレスの表記はxxx.xxx.xxx.xxx
に統一します。
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? <- yesを入力しEnter
Warning: Permanently added 'xxx.xxx.xxx.xxx' (RSA) to the list of known hosts.
root@xxx.xxx.xxx.xxx's password:
SAKURA Internet [Virtual Private Server SERVICE]
[root@xxx.xxx.xxx.xxx ~]#
以降の作業はログイン方法の変更が完了するまで、このログイン状態のままで進めていきます。
別のユーザーやローカルでの作業が必要な場合、別ウィンドウまたは別タブで作業を行うようにしましょう。
パッケージとシステムのアップデート
インストールされている全てのパッケージのアップデート、およびシステムのアップグレードを実行します。
実行前にキャッシュの削除を挟みます。
yum clean all && \
yum -y update && \
yum clean all && \
yum -y upgrade && \
yum clean all
Tips
上記のように&&
で連結することでコマンドを連続実行できます。
またコマンド入力中に\
を入力後Enter
を押すとコマンド入力を改行することができます。
システムのバージョン確認
現在のシステムのバージョンを確認します。
cat /etc/redhat-release
CentOS release 6.7 (Final)
システムの日本語化
システムの言語設定を行います。
言語グループは初期状態でインストール済みのため、設定のみ行います。
LANG
を下記に変更し、SUPPORTED
を追記します。
vi /etc/sysconfig/i18n
- LANG="C"
+ LANG="ja_JP.UTF-8"
+ SUPPORTED="ja_JP.UTF-8:ja_JP:ja"
設定を保存したら、設定ファイルをsource
コマンドで一度実行します。
source /etc/sysconfig/i18n
これで再起動しなくても言語設定が適用されます
管理ユーザーのパスワード変更
初期パスワードから変更しておきましょう。
今回の自分のようにOSを再インストールした場合は、新しいパスワードを入力したはずなので飛ばします。
passwd
ユーザー root のパスワードを変更。
新しいパスワード: <- パスワードを入力
新しいパスワードを再入力してください: <- パスワードを再入力
passwd: 全ての認証トークンが正しく更新できました。
ログイン用ユーザーの作成と設定
root
ユーザーの代わりにログインするための新規ユーザーを作成します。
ユーザーグループはwheel
を指定します。
あわせて新規ユーザーのパスワードも設定します。
useradd LOGIN_USER -G wheel && \
passwd LOGIN_USER
LOGIN_USER
の部分を任意のユーザー名に差し替えてください。
以降のログイン用ユーザーの表記はLOGIN_USER
に統一します。
ユーザー LOGIN_USER のパスワードを変更。
新しいパスワード: <- パスワードを入力
新しいパスワードを再入力してください: <- パスワードを再入力
passwd: 全ての認証トークンが正しく更新できました。
ユーザーグループ権限の設定
管理者権限を利用できるユーザーグループを設定します。
wheel
グループに属するユーザーのみ管理者権限を扱えるようになります。
visudo
下記
sudoers.tmp
は、直接vi
コマンドで編集するのではなくvisudo
コマンドを使用して編集します。
保存時に設定の文法チェックを行い、エラーがあった場合は再編集させてくれます。
- # %wheel ALL=(ALL) ALL
+ %wheel ALL=(ALL) ALL
SSH鍵ペアの作成と設置
公開鍵を設置するための.ssh
ディレクトリをユーザーLOGIN_USER
のホームディレクトリに作成します。
また作成した.ssh
ディレクトリのパーミッションを700
に変更し、所有者もLOGIN_USER
に変更します。
mkdir /home/LOGIN_USER/.ssh && \
chmod 0700 /home/LOGIN_USER/.ssh && \
chown LOGIN_USER:LOGIN_USER /home/LOGIN_USER/.ssh
次はローカル側でssh
の鍵ペアを作成します。(別ウィンドウまたは別タブを開きます。)
パスフレーズの入力は、入力しても空EnterでもOKです。
入力した場合、初接続時にパスフレーズの入力が発生します。
鍵ペア作成後、秘密鍵id_rsa
のパーミッションを0600
に変更します。
HOST_NAME
の部分はホスト名に設定したドメイン名に差し替えてください。
以降のホスト名の表記はHOST_NAME
に統一します。
ローカルで実行します
mkdir -p ~/.ssh/HOST_NAME && \
ssh-keygen -t rsa -f ~/.ssh/HOST_NAME/id_rsa && \
chmod 0600 ~/.ssh/HOST_NAME/id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): <- パスフレーズを入力(空Enter可)
Enter same passphrase again: <- パスフレーズを再入力(空Enterした場合、再度空Enter)
Your identification has been saved in /Users/user/.ssh/HOST_NAME/id_rsa.
Your public key has been saved in /Users/user/.ssh/HOST_NAME/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user@MacBook-Pro.local
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| |
| | <- 例
| |
| |
| |
| |
+-----------------+
scp
コマンドで、上述で作成した公開鍵id_rsa.pub
をサーバーにauthorized_keys
としてコピーします。
ローカルで実行します
scp ~/.ssh/HOST_NAME/id_rsa.pub LOGIN_USER@xxx.xxx.xxx.xxx:~/.ssh/authorized_keys
サーバーにコピーされた公開鍵authorized_keys
のパーミッションを0600
に変更します。
chmod 0600 /home/LOGIN_USER/.ssh/authorized_keys
SSHのポート番号とログイン方法の変更
SSHの設定を変更します。
この設定の作業時は、ログイン中のroot
ユーザーは絶対にログアウトさせてはいけません。
設定に誤りがあった場合、ログインできなくなり取り返しがつかなくなります。(最悪OSを再インストールすることになります。)
接続確認は必ず別ウィンドウまたは別タブで行いましょう。
vi /etc/ssh/sshd_config
まず、SSHのポート番号が標準の22番
のままでは不正アクセスされやすいので変更します。
ポート番号は0〜65535
から選べますが、0〜1023
はWELL KNOWN PORT NUMBERSに含まれ、1024~49512
は登録ポートと呼ばれ既存のサービスと被る可能性がありますので、なるべく49513〜65535
から選びましょう。
SSH_PORT
の部分を任意のポート番号に差し替えてください。
以降のSSHのポート番号の表記はSSH_PORT
に統一します。
- #Port 22
+ Port SSH_PORT
次に、root
ユーザーでの直接ログインを禁止します。
- #PermitRootLogin yes
+ PermitRootLogin no
次に、公開鍵認証を有効化します。
- #RSAAuthentication yes
- #PubkeyAuthentication yes
- #AuthorizedKeysFile .ssh/authorized_keys
+ RSAAuthentication yes
+ PubkeyAuthentication yes
+ AuthorizedKeysFile .ssh/authorized_keys
最後に、パスワード認証を禁止します。
- PasswordAuthentication yes
+ PasswordAuthentication no
設定を保存したら、sshd
を再起動します。
service sshd restart
これで、ローカル側から公開鍵認証が行えるようになりました。
ターミナルを別ウィンドウまたは別タブで開き、接続確認をします。
ローカルで実行します
ssh LOGIN_USER@xxx.xxx.xxx.xxx -i ~/.ssh/HOST_NAME/id_rsa -p SSH_PORT
- 上記
ssh
コマンドでログインが成功する -
su
コマンドおよびsudo
コマンドが使用できる
この2点が確認できたらroot
ユーザーをログアウトしても大丈夫です。
これでログイン方法の設定は完了になります。
簡単にSSHへログインするための設定
ローカル側の~/.ssh/config
に後述の設定することでHOST_NAME
のみでログインできるようになります。
ローカルで実行します
vi ~/.ssh/config
下記の設定を追記します。
+ Host HOST_NAME
+ HostName xxx.xxx.xxx.xxx
+ Port SSH_PORT
+ User LOGIN_USER
+ IdentityFile ~/.ssh/HOST_NAME/id_rsa
これでHOST_NAME
のみでログインできるようになりました。
ローカルで実行します
ssh HOST_NAME