さくらのVPSで Ruby on Rails のアプリを公開 第5回

Ruby on Rails

こんにちは。じじグラマーのカン太です。
眠い目をこすりつつ、週末プログラマーをしています。

Ruby on Railsで開発した業務系のアプリをさくらのVPSサーバーで公開したので、その手順を紹介する企画の第5弾です。

今回の記事では、管理者ユーザーの「root」で直接ログインできなくし、セキュリティを向上させていきます。では、さっそくはじめましょう。

前回の記事はこちらをどうぞ。

鍵認証って?

サーバーを遠隔操作するには、サーバーへログインする必要があります。サーバーへログインするにはユーザーとパスワードを入力するわけですが、ユーザーとパスワードがばれてしまえばだれでもどこからでも接続されてしまうので、セキュリティ上安全とは言えません。

そこで、もう一段階セキュリティの安全度を上げるために、「鍵認証」を使用しますサーバー側に「公開鍵」、接続するパソコン側に「秘密鍵」を設定することで、秘密鍵をもっているパソコンからでなければサーバーへログインできなくすることが可能となります。

仕組みはわからなくても、使えればいいんです。しかも無料でセキュリティを向上させることできるそうなので、早速やっていきましょう。

公開鍵と秘密鍵を作成

まずは、接続するパソコンに秘密鍵を保存するフォルダを作ります。場所もフォルダ名も任意です。

前回も使用した「Tera Term」を起動し、「新しい接続」ダイアログを「キャンセル」をクリックして閉じてください。

真っ黒な画面になったら。メニューから「設定」→ 「SSH鍵生成」を選択してください。
下の画面になるので、鍵の種類は「RSA」ビット数は「2048」と入力(おそらく初期値のまま)「生成」ボタンをクリックしてください。

鍵を生成してくれるので、パスワードを入力して「公開鍵の保存」をクリックしてください。
保存先を聞いてきますので、先ほど作ったフォルダに保存しましょう。

以上で公開鍵ができました。
ダイアログがそのまま残っていますので、続いて、「秘密鍵の保存」をクリックして秘密鍵も同様に作成してください。

公開鍵を使ってサーバーに接続する

次に作った公開鍵でサーバーにログインしましょう。「Tera Term」を再起動して、前回作った作業用ユーザーでログインしてください。

作業用ユーザーのホームディレクトリに移動し、ディレクトリ確認します。

# cd
# pwd
/home/sakura_user

ホームディレクトリへの移動が確認できました。
ここに、さきほど作った公開鍵を保存します。やり方はカンタン。エクスプローラーから、保存したフォルダにある「id_rsa.pub」というファイルを、「Tera Term」のコンソール画面にドラッグ&ドロップしてあげるだけです。

ファイル転送のダイアログが表示されるので、「SCP」を選んで「OK」をクリックしてください。

うまく転送できているか確認しましょう。

# ls -l
合計 4
-rw-r--r-- 1 sakura_user sakura_user 392  9月 23 16:58 id_rsa.pub

「id_rsa.pub」ファイルがあれば成功です。

次に、ホームディレクトリに置いた公開鍵を、公開鍵保存用フォルダを作成しコピーします。
上から順に実行してください。

# mkdir .ssh
# chmod 700 .ssh
# cat id_rsa.pub > .ssh/authorized_keys
# chmod 600 .ssh/authorized_keys
# rm -f id_rsa.pub

なんだかよくわかりませんが、下記のようになっていればOKです。

# ls -la .ssh
合計 4
drwx------ 2 sakura_user sakura_user  28  9月 5 17:57 .
drwx------ 5 sakura_user sakura_user 117  9月 5 17:58 ..
-rw------- 1 sakura_user sakura_user 392  9月 5 17:57 authorized_keys

鍵認証を使って接続する為に、一度「Tera Term」を閉じます。

再度 「Tera Term」 を起動し、今度は「RSA/DSA/ECDSA/ED25519鍵を使う」を選択して、さきほど作った秘密鍵を選択してください。右端のフォルダ選択ボタンをクリックして、秘密鍵「id_rsa」を選択してください。パスフレーズは、鍵生成時に入力した「鍵のパスフレーズ」を入力してください。

「OK」をクリックして接続できていれば成功です。

まとめ

長くなってしまいましたので、今回はここまでにしましょう。どうでしょう、うまくいきましたでしょうか。

次回は、SSH接続のポートの変更や、パスワード認証を無効にし、三度目の正直で「root」ユーザーでの接続をできないようにします。

コメント