公開鍵認証でSSH接続する

投稿者: | 2013/02/27

さくらVPSは、デフォルトでパスワードによる認証でSSH接続していた。
そのままでも良いが、パスワードが漏れた場合誰でもサーバにログインできてしまうという問題がある。
ましてや、sudo権限を持ったユーザだとサーバの設定も変えることができてしまうので大問題である。
なので、より強力な認証方法として公開鍵認証でSSH接続してみる。
公開鍵認証方式は、公開鍵と秘密鍵を作成する。
公開鍵をサーバ上、秘密鍵は自分のローカルPCに置き、ログインの際にこの2つの鍵を照らし合わせる(復号)することで認証が取れるようになる。
この方式なら、パスワードが漏れたとしても秘密鍵が無いとサーバにログインできないので比較的安心だ。
では、設定の方法を見てみる。

  1. 公開鍵と秘密鍵を作成する
  2. 自分のホームディレクトリ内に、.ssh ディレクトリがあるかを確認する。
    確認方法は ls -la でできる。-a オプションが無いと、隠しディレクトリ(.付きディレクトリ)が見れないので注意。
    .ssh ディレクトリが無ければ、mkdirコマンドで作成する。
    さらに、.ssh ディレクトリは自分以外のユーザからアクセスできないようにchmod コマンドでパーミッションを変更しておく。

    ssh-keygen コマンドで公開鍵と秘密鍵を作成する。

    • -N オプションはパスフレーズを指定できるのでここではパスフレーズを無しにする。
      本当はパスフレーズがあったほうがセキュリティ的によろしいのだが、ログインの度にパスフレーズを打ち込むのが面倒なのでここでは指定しない
    • -t オプションは鍵の種類を選択できる。rsa, dsaなどがあるが、ここではrsaを指定する
    • -b オプションは作成する鍵のbit数を指定できる。
    • -C オプションは公開鍵にコメントを残せる。作成した公開鍵が後で分かるように指定しておくと良い

    ssh-keygen コマンドを実行すると /home/hoge/.ssh/ 以下に以下のファイルが作成される。

    • id_rsa ・・・ 秘密鍵
    • id_rsa.pub ・・・ 公開鍵

    秘密鍵(id_rsa) をWinSCP等でローカル環境に移した後、サーバ上の秘密鍵を削除しておく。

  3. 公開鍵をサーバ側に登録する
  4. 作成した公開鍵はそのままだとサーバ側で認識できないので、authorized_keys というファイルに登録する。

  5. sshd_condigで公開鍵認証方式に変更する
  6. /etc/ssh/sshd_config を編集し、パスワード認証から公開鍵認証に変更する。

    sshd を再起動する

  7. ログインしてみる
  8. ターミナルをもう一つ起動して、公開鍵認証でログインできるか試してみる。
    現在接続しているSSH接続を切断してしまうと、万が一SSHログインできなくなってしまうと二度とログインできなくなってしまうので注意。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*