さくらVPSのsshによる鍵認証の設定
Wed, Sep 15, 2010↑で指摘されているユーザーによる脆弱性について、自分もインフラ周りに弱い危ういユーザーの一人です。先日、さくらVPSに登録したのですが備忘録を兼ねて、まずはsshによる鍵認証について、ここに書き残しておこうと思います。まずはPuttyをダウンロード、インストールします。
鍵認証の設定手順は次の通り。
- 公開鍵と秘密鍵の生成
- 鍵認証ログイン用のユーザー作成
- サーバ側に公開鍵を登録
- sshの設定
- Puttyに秘密鍵をセットして接続
では、順番に進めていきます。
1). 公開鍵と秘密鍵の生成
[スタート]-> [プログラム]-> [PuTTY]-> [PuTTYgen]で鍵生成ツールを開き、公開/秘密鍵ペアの生成の「生成」をクリックします。
赤い斜線部分のエリアをマウスで動かして、乱数を生成します。
鍵の生成が完了すると次のような画面になります。
鍵のコメントを任意で編集します。用途やユーザー情報を書いておくと良いでしょう。
鍵のパスフレーズには任意のパスワードを入力します。**これはOSへのログインパスワードとは関係ありません。
** 次に生成した鍵を保存します。「公開鍵の保存」と「秘密鍵の保存」ボタンを押して鍵を保存します。
秘密鍵のファイル名は拡張子を.ppk、公開鍵は.pubとしておくと良いでしょう。
2). 鍵認証ログイン用のユーザー作成
次に鍵認証でログインするユーザーを作成します。
useradd sakura passwd sakura Changing password for user sakura. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
3).サーバ側に公開鍵を登録
サーバ側に公開鍵を登録します。
鍵認証用のユーザーのディレクトリの.sshディレクトリにauthorized_keysを作成します。
.sshディレクトリが無ければ作成してください。また、「.」で始まるファイルはlsでは確認することが出来ず、ls -aとしなければなりません。
cd /home/sakura (ユーザーディレクトリに移動) mkdir .ssh (.sshディレクトリを作成) chmod 700 .ssh (.sshディレクトリの権限を所有者だけに限定) chown -R sakura:sakura .ssh (所有者をrootからユーザに変更) vi authorized_keys (公開鍵ファイルを作成、編集)
PuTTYgenの「OpenSSHのauthorized_keysファイルに~公開鍵」の部分をコピーして、authorized_keysにペーストして、保存します。
PuTTYgenを閉じてしまった場合は、[変換]->[鍵のインポート]で秘密鍵を指定してください。
chmod 600 authorized_keys (権限を所有者だけに変更)
4)サーバのssh設定
サーバ側のssh設定で、鍵認証ログインを許可するように設定します。
vi /etc/ssh/sshd_config #PermitEmptyPasswords no ⇒ PermitEmptyPasswords no(パスワード無しのログインを禁止) #RSAAuthentication yes ⇒(RSA認証を許可) RSAAuthentication yes #PubkeyAuthentication yes ⇒(公開鍵認証を許可) PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys ⇒(認証鍵ファイルの場所を指定) AuthorizedKeysFile .ssh/authorized_keys #PasswordAuthentication yes ⇒ (rhost認証を無効) PasswordAuthentication no #RhostsRSAAuthentication no ⇒ (rhost認証を無効) RhostsRSAAuthentication no
設定を保存後、設定を反映させるためにsshdをリスタートします。
/etc/init.d/sshd restart
5).Puttyに秘密鍵をセットして接続
セッションを指定して、ホスト名またはIPアドレスを入力。セッション一覧の欄には任意の設定名を入力します。
[接続]->[SSH]->[認証]を選択し、「認証のためのプライベートキーファイル」に秘密鍵ファイルを指定します。
最初の画面に戻って保存をし、開くボタンをクリックします。
VPSに鍵認証でログイン出来ることを確認できたら、Rootログインが出来ないように設定を変更します。
vi /etc/ssh/sshd_config #PermitRootLogin yes ⇒ PermitRootLogin no
設定が完了したら、再度sshdをリスタートします。
/etc/init.d/sshd restart
rootでログイン出来ないことを確認しましょう。
これで、公開鍵認証の設定は完了です。