「さくらのVPS」導入解説 その7:公開鍵認証の設定(後編)

この記事は「さくらのVPS導入解説 その6」の続きです。

前回で秘密鍵と公開鍵、および公開鍵を置くためのディレクトリが作成できました。今回は実際に公開鍵をサーバー上に送信し、認証方法をパスワードから公開鍵認証に切り替えます。

FTPクライアントで公開鍵を送信

具体的にどうやって送るかですが、今回はFTPクライアントを使って送ります。

まずはFTPクライアントがSSH接続に対応している必要があります。有名どころでSSH接続できるクライアントとしては、WinSCPとFileZillaがあります。(正確にはSCPクライアントやSFTPクライアントですが)

今回はやはり初心者にとっつきが良いと思うFileZillaを使います。
ダウンロードとインストールについては「FFFTPからの乗り換えにおすすめのFTPクライアント「FileZilla」の導入と設定」の記事を参考にしてください。

FileZillaでの公開鍵送信

  1. FileZillaメニューバーの「ファイル」→「サイトマネージャ」をクリックします。
  2. 「新しいサイト」ボタンをクリックします。
  3. 「ホスト」にVPSのIPアドレスを入力します。
  4. 「ポート」にはSSHの初期ポートである「22」を入力します。
  5. 「Protocol」のリストボタンから「SFTP」を選択します。
  6. 「ログオンの種類」は「通常」を選びます。
  7. 「ユーザー」に作成しておいた通常ユーザー名を入力します。
  8. 「パスワード」に通常ユーザーのパスワードを入力します。
    FileZillaでサイトを追加
  9. 「OK」をクリックするとVPSが追加されます。
  10. 「接続」をクリックして接続したあと、以下のように「.ssh」ディレクトリがあることを確認します。
    .sshを確認
  11. 「.ssh」ディレクトリを開き、先ほど作成・保存しておいた「authorized_keys」をアップロードします。

これで公開鍵がサーバー上に置けました。

さらにauthorized_keys.pubはパーミッションを600(自分だけ読み書きできる)にしておきます。
Poderosaから行っても良いですが、FileZillaを開いているので、そのまま右クリック→「ファイルパーミッション」で600に設定してもOKです。

以上で公開鍵の配置が完了しました。

公開鍵認証を有効にする

公開鍵は置けましたが、さくらのVPSの初期設定ではパスワード認証のみが有効になっており、公開鍵認証は有効になっていません。そこで「sshd_config」というファイルを編集し、公開鍵認証を有効にします。

  1. Poderosaで通常ユーザーでVPSにログインします。
  2. sshd_configはroot権限でないと編集できないので、ここで一時的にroot権限を扱える「sudo」コマンドを使います。下記のように入力してください。
    $ sudo vi /etc/ssh/sshd_config

    • sshd_configは実際には上記のようにフルパスで「/etc/ssh/sshd_config」と入力しないと動かないので注意してください。
    • またsudoのあとの「vi」は、Linux/Unix系に標準で入っているVi(Vim)というエディタを起動するためのものです。
    • なおLinuxやUnixではサーバー設定に関するファイルはetcディレクトリ以下に置くなどの大まかな決まりがあります。(ディストリビューションごとに細かい違いはありますが)。そのため今回編集するsshd_configも、etc内に置かれています。
  3. 「password for username:」とパスワード入力を求められるので、入力(または貼り付け)します。
    • Poderosaでの貼り付けは、メニューバー「編集」→「貼り付け」です。
  4. 上手くコマンドが動けば、sudoの設定ファイルを編集したときと同じようにviエディタを使っての編集画面になります。初期設定では鍵認証に関する以下の三行が「#」でコメントアウトされていますが、これらを有効にします。
    #RSAAuthentication yes
    #PubkeyAuthentication yes
    #AuthorizedKeysFile     .ssh/authorized_keys
    
    • (viの操作に詳しくない場合は)カーソルキーで該当の箇所まで移動して、それぞれの「#」の上でxキーで削除できます。
  5. 「#」を削除して有効にできたら、いったん上書き保存&終了します。sudoの設定ファイルのときと同じく「:wq」と入力してEnterキーを押します。
    :wq
    
  6. さらにsshd_configはSSHデーモン(サービス)を再起動しないと変更が有効にならないので、その操作を行います。これもroot権限が必要なので、sudoを使い、sshd(SSHデーモン)のフルパスを指定して再起動させます。
    $ sudo /etc/rc.d/init.d/sshd restart
    
  7. 「Stopping sshd:」および「Starting sshd:」が「OK」と出れば再起動完了です。

これで鍵認証が有効になりました。

なお、パスワード認証がまだ有効になっていますが、この時点でパスワード認証を同時に不可にしてしまうと、万が一鍵認証が通らなかった場合に、サーバーにアクセスできなくなります。なので、まだパスワード認証も許可しておきます。

公開鍵認証への切り替え

公開鍵認証でのログインの確認

まず公開鍵認証でのログインが可能になっているかを確認します。

  1. いったんPodrosaのコンソールを閉じます。
  2. 再び新規telnet/SSH接続を開きます。
  3. 「認証方法」をパスワードから「公開鍵」に変更し、「パスフレーズ」も鍵作成時に入力したパスフレーズに変更します。
  4. さらに「鍵ファイル」は参照ボタンから、保存しておいた秘密鍵を選びます。
  5. 「OK」で接続します。

接続に成功すれば、これで公開鍵認証はOKです。

パスワード認証およびrootログインの無効化

セキュアな公開鍵認証が可能になったので、これまでのパスワード認証は無効にしておきます。
さらに、あわせてここでrootでのログインも禁止しておきます。

  1. 「sshd_config」を開きます。
    $ sudo vi /etc/ssh/sshd_config
    
  2. #PermitRootLogin yesとなっている行を探します。
  3. xキーで「#」を削除します。
  4. yesのsに合わせた状態でaキーを押して挿入モードに切り替え、「yes」を「no」に書き換えます。
  5. Escキーを押して挿入モードから抜けます。
  6. つづけてPasswordAuthentication noとなっている行を探します。
  7. yesのsに合わせた状態でaキーを押して挿入モードに切り替え、「yes」を「no」に書き換えます。
  8. 「:wq」と入力して、上書き保存と終了を同時に行います。

これでパスワード認証およびrootログインが無効になりました。以降は通常ユーザーでの公開鍵認証によるログインのみを利用することになります。

次回はサーバーのシステムを最新状態にアップデートします。