Warning: Declaration of FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Tags::wrap($content, $before, $sep, $after) should be compatible with FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Category::wrap($content, $sep, $parents) should be compatible with FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Post_Thumbnail::wrap($html, $post_id, $post_thumbnail_id, $size) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Post_Meta::wrap($data, $post_id, $key, $ui, $single) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Widget::wrap($params) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/widget.php on line 0

Warning: Declaration of FEE_Field_Comment::wrap($content) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Term_Field::wrap($content, $term_id, $taxonomy) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Single_Title::wrap($title) should be compatible with FEE_Field_Term_Field::wrap($content, $term_id, $taxonomy) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Option::wrap($content, $key, $ui) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0
さくらのVPS導入 | Sabakura Blog - Part 2

「さくらの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ログインが無効になりました。以降は通常ユーザーでの公開鍵認証によるログインのみを利用することになります。

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

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

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

前回まではSSHでのログインにはすべてパスワード認証を使ってきました。今回はこれをよりセキュアな公開鍵認証へと切り替えます。

公開鍵認証とは

公開鍵認証とは、公開鍵と秘密鍵という二つの鍵を利用して認証を行う方法です。

詳しくは暗号化技術の話になるので割愛しますが、簡単に言うと、公開鍵という名前の通り全世界に公開されても構わない鍵をサーバーに置いておきます。一方で秘密鍵という鍵をローカルマシンに保存しておき、この鍵は絶対に他人に漏れないようにします。

こうして公開鍵と秘密鍵という二種類の鍵を最初から別々においておくことで、暗号の鍵をインターネットを介して送信するということが不要になり、鍵が途中で盗まれるという危険もなくなる、というわけです。

公開鍵および秘密鍵の作成

ではまず公開鍵と秘密鍵を作成します。

  1. Poderosaのメニューバー「ツール」→「SSH鍵作成ウィザード」をクリックします。
  2. 「SSH鍵作成ウィザード」ダイアログが表示されるので、「アルゴリズム」は「RSA」、「ビット数」は「2048」(数字が大きいほど暗号強度が強いです)にします。
  3. 「パスフレーズ」は鍵が漏洩した際の万が一の保険として設定しておきます。(このパスフレーズは自分で考えて設定します)
  4. 「次へ」をクリックします。
    鍵生成
  5. マウスをランダムに動かすことで乱数を発生させますので、ウィンドウ内でぐりぐりと適当に動かします。
    鍵作成のための乱数生成
  6. しばらくすると鍵の生成が完了します。「次へ」をクリックし、「秘密鍵を名前をつけて保存」をクリックして秘密鍵をわかりやすい場所に保存しておきます。
    • なお、秘密鍵には日本語名は使えませんが、名前そのものはとくにどんな名前でもかまいません。(慣例としてid_rsa.ppkとすることも多いようです)
  7. 次に「OpenSSH形式で公開鍵を名前をつけて保存」をクリックし、公開鍵を「authorized_keys」という名前でこちらもわかりやすい場所に保存しておきます。
    • 公開鍵の名前は必ず「authorized_keys」にします。また保存する際に拡張子.pubをつけないように注意してください。

これで秘密鍵および公開鍵が保存されました。

公開鍵を保存するディレクトリを作成する

秘密鍵はローカルにおいておくものですのでこれでOKですが、公開鍵に関してはサーバー上にアップする必要があります。またアップするためのディレクトリも事前に用意しておかなければいけません。

  1. Poderosaを使ってVPSにログインします。
    • なお、このとき必ず前回作った通常ユーザーでログインするようにしてください。というのも、この通常ユーザーの認証のために公開鍵を使うからです。
  2. ログインしたら、まず公開鍵を置いておくためのディレクトリを作ります。
    公開鍵は、$HOMEという基本となるディレクトリの直下に「.ssh」というディレクトリを作ってそこに置きます。
  3. まずディレクトリを移動するための「cd」コマンドを使って$HOMEに移動します。
    $ cd $HOME
    
  4. 次にディレクトリを作成する「mkdir」コマンドを使って、「.ssh」ディレクトリを作成します。
    $ mkdir .ssh
    

これで.sshディレクトリが作成されました。

パーミッションの設定

作成したディレクトリにはさらにパーミッションを設定しておく必要があります。今回は自分のみ読み・書き・実行ができる700にパーミッションを設定します。

パーミッションの設定にもやはりコマンドが用意されており「chmod」というコマンドです。
「chmod パーミッション 対象ファイル/ディレクトリ」という形で指定します。

$ chmod 700 .ssh

これでパーミッションの設定も完了です。

次回は公開鍵を実際にサーバー上に送り、さらに認証方法を公開鍵認証のみに変更します。

「さくらのVPS」導入解説 その5:sudoの設定

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

前回はroot以外に通常ユーザーを作成しました。今回はこの通常ユーザーでsudoコマンドが使えるように設定します。

sudoとは

通常ユーザーでログインしている場合でも、root権限が必要な操作を行いたいときがあります。そうしたときのために「sudo」というコマンドが用意されています。sudoコマンドを使うことで、一時的にroot権限が必要な操作を実行できます。

ただし、新規作成したユーザーはそのままではsudoコマンドは使えません。新規作成したユーザーが誰でもroot権限が行使できたら問題となるため、これは当然です。

そこで作成した通常ユーザーをrootを使う権利のあるグループに所属させます。このrootを使う権利のあるグループは「wheel」と言います。

wheelグループに所属させる

通常ユーザーをwheelに所属させるのは、root権限がないとできません。なので、ここではいったんrootユーザーに切り替えます。rootになるためにはsu(switch userの略)を使います。

  1. Poderosaで「su -」と入力します。

    $ su -
    
    • 「-」の部分には、本来は切り替えたいユーザー名を指定しますが「-」とするとrootへの切り替えという意味になります。
  2. パスワードを求められるので、rootのパスワードを入力します。
  3. rootに切り替わったことを確認し、ユーザーの所属を変える「usermod」コマンドを入力します。
    # usermod -G wheel username
    
    • 「username」は自分が作成したユーザー名を入力します。

これで新規ユーザーがwheelグループに所属しました。

sudoの設定

さらに、root以外のユーザーがsudoコマンドを使えるようにするには、sudoの設定ファイルを編集する必要があります。これにはroot権限の状態で「visudo」というコマンドを使います。

  1. Poderosaで「visudo」と入力します。
    # visudo
    
    • ここから先、viの操作に慣れていない方は注意してください。
      詳しくは後述しますが、visudoというコマンドを実行した時点で、コンソール内の画面は、viというエディタでsudoの設定ファイルを開いた状態に変わっています。
      viの操作は変わっており、hjklでカーソル移動をするなど特殊な点が多々あります。ただし、Poderosaからであればキーボードのカーソルキーが使えるので、とりあえずはそちらを使うと良いと思います。
  2. ファイルの最下部から数えて10行目ほどのところに以下のような行があります。この「# %wheel」の「#」の上に点滅しているカーソルを重ねます。その状態でキーボードの「x(エックス)」のキーを押すと、「#」が削除されます。

    ## Allows people in group wheel to run all commands
    # %wheel  ALL=(ALL)       ALL
    
    • 「#」はこの行がコメントアウトされているものを示す印でしたので、これが削除されたことにより、wheelユーザーがsudoコマンドを使えるようになります。
  3. 最後に設定ファイルの上書き保存を行います。viで「:(コロン)」「w(ダブリュー)」「q(キュー)」と打ってEnterを押すと、上書き保存と同時にファイルが閉じられます。

これでユーザーがsudoコマンドを使えるようになりました。

次回は認証方式をパスワードから鍵認証に切り替えます。