さくらVPS/CentOS 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では仮登録完了時のメールに記載されています。

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

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

useradd USER_NAME -G wheel
passwd USER_NAME

😼 yumのアップデート

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

sudo yum update

🐯 sudoの設定

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

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

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

# auth required pam_wheel.so use_uid

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

SU_WHEEL_ONLY yes

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

# %wheel ALL=(ALL) ALL

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

PermitRootLogin no
PasswordAuthentication no

セキュリティを強化するためにSSHのポート番号を変更。

sudo vi /etc/ssh/sshd_configで次の行をファイルの一番下に追加して保存。
SSH_PORTは0 ~ 65535から選べます。
ほかのサービスとかぶらないためにも10000以上の番号で好きな番号にしてください。

Port SSH_PORT

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

su - USER_NAME
mkdir ~/.ssh/
chmod 700 ~/.ssh/

サーバからログアウトして、ローカルサーバで次のコマンドを実行する。

このコマンドは公開鍵をサーバ側に送るためのコマンドです。

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

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

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

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

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を実行指定可を追加します。

Host VPS_NAME
HostName xxx.xxx.xxx.xxx
Port SSH_PORT
User USER_NAME
identityfile ~/.ssh/VPS_NAME/id_rsa.VPS_NAME

設定が完了したら、次のコマンドでログインできます。

ssh VPS_NAME

🍣 sshの接続ホストの制限

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

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

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

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

sshd: ALL

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

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

fpu_tmp_1355452728.6158_da3721

(1) 左メニューの「リモートコンソール」を開く

(2) root/パスワードを打ってログイン

fpu_tmp_1355454761.8856_e3406f

🍮 参考リンク

さくらの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(macOS 10.8.4)

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

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)