酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

さくらVPS/Cent OS 6.4 初期状態から鍵認証SSHでの接続まで[Railsサーバへの道]

さくらVPS 2GB SSDのCentOS 6.4をセットアップしてイケてるRailsサーバに仕上げるまでのシリーズ企画です。第1回は初期状態からSSHで接続できるようにするまでです。一般的にインターネットに公開しているLinuxサーバは色んな所からアクセスが来やすいので契約したらできるだけ早くこのパートを実施して下さい。


SSH認証鍵の作成

今回のVPS用にローカルにSSH認証鍵を新規作成する場合は、SSH認証キーをBitbucket/GitHubに設定しよう!の「SSHキーの作成」のセクション を参考にSSHキーを作成。すでにSSHキーをローカルに保持している場合はスキップ。

ユーザー作成

ローカルのターミナルを起動してsshでサーバにログイン。
xxx.xxx.xxx.xxxは今回のサーバのIPです。また、パスワードはさくらVPSでは仮登録完了時のメールに記載されています。

1
ssh root@xxx.xxx.xxx.xxx -p 22

ログイン用のユーザーUSER_NAME(名前は自由)を作成。

1
2
useradd USER_NAME -G wheel
passwd USER_NAME

yumのアップデート

とりあえず、yumを最新の状態にアップデート。

1
sudo yum update

sudoの設定

UNIX系のOSには一般ユーザーに一時的にroot権限を与えるsudoコマンドががあります。通常は一般ユーザーとして作業をして、root権限が必要な時のみsudoでコマンドを実行することがサーバのセキュリティ管理として適切です。

このsudoを適切に使えるように設定を行なっていきます。

まず、root権限を使えるwheelグループについて設定していきます。 sudo vi /etc/pam.d/suでファイルを開いて以下の行のコメントアウトを外す(先頭の#を取る)。

1
# auth required pam_wheel.so use_uid

sudo vi /etc/login.defsに以下の行を追加して保存。

1
SU_WHEEL_ONLY yes

sudo visudoで以下の行のコメントアウトを外す(先頭の#を取る)。

1
# %wheel ALL=(ALL) ALL

セキュリティを強化するためにrootでのログインを禁止。(sshd再起動後反映)
sudo vi /etc/ssh/sshd_configで以下のように修正。

1
2
PermitRootLogin no
PasswordAuthentication no

セキュリティを強化するためにSSHのポート番号を変更。
sudo vi /etc/ssh/sshd_configで以下の行をファイルの一番下に追加して保存。 SSH_PORTは0 ~ 65535から選べます。 他のサービスとかぶらないためにも10000以上の番号で好きな番号にしてください。

1
Port SSH_PORT

サーバに~/.ssh/フォルダを作成する。

1
2
3
su - USER_NAME
mkdir ~/.ssh/
chmod 700 ~/.ssh/

サーバからログアウトして、ローカルサーバで以下のコマンドを実行する。
このコマンドは公開鍵をサーバ側に送るためのコマンドです。

パラメータ
    ida_rsa.VPS_NAME.pub: 最初に作成したsshキーの公開鍵
    VPS_NAME: 今回のサーバの識別用の名前(自分の好きな名前)

またSSH認証鍵を作成する場合はSSH認証キーをBitbucket/GitHubに設定しよう![Mac簡単手順]

1
scp id_rsa.VPS_NAME.pub root@xxx.xxx.xxx.xxx:/home/USER_NAME/.ssh/authorized_keys

サーバに公開鍵を送信したら、authorized_keysの所有者とパーミッションを変更してサーバ側のsshdを再起動します。

1
2
3
4
5
6
7
ssh root@xxx.xxx.xxx.xxx -p 22
su - USER_NAME
sudo chown USER_NAME:USER_NAME .ssh/authorized_keys
chmod 600 /home/USER_NAME/.ssh/authorized_keys
exit #<= rootに戻る
/etc/init.d/sshd restart
exit

以後はrootでのsshへのアクセスはできなくなります。

次にローカルのターミナルを起動してvim ~/.ssh/configを実行指定可を追加します。

1
2
3
4
5
Host VPS_NAME
    HostName xxx.xxx.xxx.xxx
    Port SSH_PORT
    User USER_NAME
    identityfile ~/.ssh/VPS_NAME/id_rsa.VPS_NAME

設定が完了したら、以下のコマンドでログインできるようになります。

1
ssh VPS_NAME

sshの接続ホストの制限

sshに接続できるホストを制限する。

sudo vim /etc/hosts.allowを以下のように編集。

1
2
ALL: 127.0.0.1
sshd: .jp
  • .jpの部分は、hogehoge.ne.jpみたいに使ってるプロバイダで指定する方がより安全

続いて、sudo vim /etc/hosts.denyを次の通りに編集。

1
sshd: ALL

おまけ:さくらVPSコンソールにアクセス方法

さくらインターネットVPSコントロールパネルにアクセスしてログイン。(初回の方はさくらVPSで登録に登録完了したらくるメールに載ってます)

fpu_tmp_1355452728.6158_da3721

(1) 左メニューの「リモートコンソール」を開く
(2) root/パスワードを打ってログイン

fpu_tmp_1355454761.8856_e3406f

Special Thanks

さくらのVPS を改めて使いはじめる 1 – 使用準備、SSH 公開鍵認証

SSHの鍵交換でPermission denied

変更来歴

12/17 14:00 scpでの公開鍵送信の部分で送付先フォルダの指定が間違っていたので修正
02/02 08:25 sudo yum updateを追加
09/22 12:01 CentOS 6.4対応 & 記述ミスの修正

検証環境

今回の記事の検証環境は以下の通りです。

Local/Server:
  Ruby: 2.0.0
  Rails: 4.0.0

Local:
  OS: Mac Mountain Mountain Lion(OS X 10.8.4)

Server(さくらVPS 2G SSD):
  CentOS release 6.4 (Final)

おすすめの書籍