「さくらの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コマンドを使えるようになりました。

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

「さくらのVPS」導入解説 その4:通常ユーザーの作成

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

前回まででrootのパスワードが変更できました。次にroot以外のユーザーを作成します。

通常ユーザー作成の意義

Linux/Unixでは、常にroot(管理者権限)ユーザーで操作をすることは推奨されていません。これは、複数ユーザーで同時に操作することが想定されているLinux/Unixでは、rootで操作をされると誰がなんの操作を行ったわからなくなるためです。そのためroot以外の通常ユーザーを作成します。そうすれば、どのユーザーがいつログインしたかなどのログが残ります。

今回は仮想サーバーですので自分しか扱わないわけですが、それでも常にrootで操作を行っていると、万が一root権限で誰かに侵入された場合などでも発見が難しいため、セキュリティ上問題があります。
また、それ以外にもシステム全体を大きく動かすようなコマンドもroot権限では簡単に実行できてしまうなど危険があります。

その意味でも、必ずroot以外の通常ユーザーを作り、普段はそちらでログインするようにします。

通常ユーザーの作成

では実際に通常ユーザーの作成に入ります。
ユーザー作成には「useradd」というコマンドを使います。

  1. 先ほどのPoderosaのコンソール画面を開きます。
    • (Poderosaを一度閉じていた場合、今回の接続の際にはパスワードは新しく設定したものを使わないといけないので注意してください)
  2. #に続けて「useradd [ユーザー名]」と入力します。
    # useradd taro
    
    • ※上記では例としてユーザー名を「taro」としていますが、実際にはユーザー名を自分で考えて入力してください。
  3. Enterキーを押すとユーザーが作成されます。

続けて、この新規ユーザーにもパスワードを設定します。なおrootに設定したのとは異なるパスワードを設定してください。

パスワードの設定には前回も使った「passwd」コマンドを使います。
ただし、先ほどはユーザー名の指定を省きましたのでrootのパスワード設定になりましたが、今度は新規ユーザーのパスワードですので、「# passwd username」とします。usernameは自身で作ったユーザー名に置き換えてください。

  1. 「passwd [ユーザー名]」と入力します。
    # passwd taro
    
  2. 以降のパスワードの設定については、前回のrootのパスワード設定と同様に行ってください。

以上で、通常ユーザーの作成とパスワード設定が完了しました。
Poderosaメニューバーの「コンソール」→「閉じる」をクリックしていったん接続を閉じます。

通常ユーザーでログインできるかの確認

それから再度「ファイル」→「新規Telnet/SSh接続」を選び、アカウントをrootではなく作成した通常ユーザー名にして、パスフレーズも通常ユーザー用のものに変更してから、接続できるかどうか試しておいてください。

上手く接続できた場合、[taro@www**** ~]$とコンソールに表示されると思います。これはtaroというユーザーで接続していることを示します。
また$は、rootではない通常ユーザーの状態で接続していることを示しています。(rootは#です)そのため、root権限が必要なコマンドを$に続けて入力しても、コマンドは無効となります。

次回は、通常ユーザーで一時的にroot権限が必要な操作を行う際のコマンド「sudo」に関する設定を行います。