こんにちは。じじグラマーのカン太です。
眠い目をこすりつつ、週末プログラマーをしています。
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」ユーザーでの接続をできないようにします。
コメント