さくらのVPS開通後にやったこと - ログイン周りの整理

さくらのVPSを使い始めたので、ログイン周りを整理しました。

  • sshでのrootログイン禁止
  • 公開鍵認証の有効化
  • パスワード認証の無効化
  • パスワードなしでsudo

環境


プラン:さくらのVPS 512
OS:CentOS 5 x86_64

前準備

ローカルの環境で鍵を作っておきます。

user@local $ ssh-keygen

ファイル名やパスフレーズを聞かれますが、何も考えずにエンターでOKです。

/etc/ssh/sshd_config編集

root@remote # vi /etc/ssh/sshd_config
# sshでのrootログイン禁止
PermitRootLogin no

# 公開鍵認証の有効化
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

# パスワード認証の無効化
PasswordAuthentication no

sshdを再起動します。

root@remote # /etc/init.d/sshd restart

user作成

普段ログインするユーザを作成します。このとき一緒にwheelグループに追加します。
user名は自分の好きなやつにしてください。

root@remote # useradd -G wheel user

パスワードなしのユーザがロックされている場合があるので、そのときはロックを解除します。
ユーザがロックされてるとSSHの鍵を使ったログインのときにPermission deniedが出ます。

root@remote # passwd -u user -f

.ssh/authorized_keys作成

作成したユーザのホームディレクトリに.sshディレクトリを作成し、その中にauthorized_keysを作成します。

root@remote # su user
user@remote $ cd /home/user
user@remote $ mkdir -m 700 .ssh
user@remote $ vi .ssh/authorized_keys

ローカルで作った公開鍵(id_rsa.pub)の中身をコピペします。僕の公開鍵は次のような内容です。

ssh-rsa AAAAB3NzaC1y (中略) 8u8784oXlG8Q== lettas@wild-air.local

authorized_keysのパーミッションを(600)に変更します。

user@remote $ chmod 600 .ssh/authorized_keys
user@remote $ exit

パスワードなしでsudoできるようにする

visudoコマンドを使って/etc/sudoersファイルを編集します。

root@remote # visudo
# wheelグループにパスワードなしでsudo許可
%wheel  ALL=(ALL)       NOPASSWD: ALL

確認

設定は以上で終了ですが、ちゃんと設定出来てるか確認しないと二度とログインできなくなってしまうので注意です。ターミナルをもう一つ立ち上げて作成したユーザでログインできるか確認しましょう。

user@local $ ssh user@host
# sudo 出来るか確認
user@remote $ sudo echo 'hoge'
# rootになるにはsudo su -を実行する
user@remote $ sudo su -
root@remote #

rootでログイン出来ないことも確認しておきましょう。

user@local $ ssh root@host
Permission denied (publickey,gssapi-with-mic).

このメッセージでいいのかな・・・

まとめ

公開鍵認証を有効化しておくといちいちパスワード入力しなくてすむから楽ですよっていう。sudoもパスワード無しで行けるようにしましたけど、セキュリティ的にどうなのかはわかりません。
手探りで設定していったので、上に書いたことが間違ってたり足りなかったりしたら教えてください。

参考

RSA公開鍵認証の有効化とパスワード認証の無効化 - http://gentoo.reichsarchiv.jp/item/17
sudo による管理者権限の付与 - http://linux.kororo.jp/cont/intro/sudo.php