Linux サーバに公開鍵を設定する

鍵のイメージ。

作成した公開鍵をサーバにアップロードし、鍵認証を設定するまでの流れを解説します。 「作成済みの公開鍵と、秘密鍵のファイルがある」こと、「鍵認証でログインするユーザが追加されている」ことを確認してください。 何れかの条件を満たさない場合は次のページを確認してください。

  1. ログインユーザを追加する
  2. Tera Term で認証鍵を生成する

公開鍵のアップロードと設定

公開鍵(のファイル)をここでは「id_rsa.pub」とします。 また鍵認証によってログインするユーザ名を「testuser」とします。 公開鍵ファイルは「鍵認証でログインするユーザの home ディレクトリ」にアップロードして配置します。 ファイルのアップロードは WinSCP か Tera Term を利用します。

サーバディレクトリのトップに移動すると home ディレクトリが確認できると思います。 鍵認証でログインするユーザのディレクトリが含まれているかどうかを確認してください。 ここでは/home/testuserとなります。 そこに公開鍵のファイル id_rsa.pub をアップロードします。

Tera Term などのターミナルから、対象のユーザでログインします。 (root ユーザの場合には「cd」コマンドを利用して対象のユーザの home ディレクトリに移動します) この時点で /home/testuser/に位置していることになります。 ターミナル上ではログインユーザの home ディレクトリは「~」の表記です。 先にアップロードしたファイル id_rsa.pub があることを確認します。 確認には「ls」コマンドを利用します。

次に公開鍵の設定を行います。ログインユーザの home ディレクトリ(~表記)に位置している状態で、次の手順で公開鍵を設定します。

# mkdir .ssh
# chmod 700 .ssh
# cat id_rsa.pub > .ssh/authorized_keys
# chmod 600 .ssh/authorized_keys
# rm id_rsa.pub
# rm: remove regular file `id_rsa.pub'? y

上記の操作手順の説明

  1. 「.ssh」ディレクトリを作成
  2. 「.ssh」ディレクトリのパーミッションを変更
  3. 「.id_rsa.pub」の内容を「authorized_keys」に複製
  4. 「.ssh/authorized_keys」のパーミッションを変更
  5. 公開鍵「.id_rsa.pub」を削除

最終的には /home/testuser/.ssh/authorized_keys のようなファイル構成になっていれば良いです。

sshd_config を編集して適用する

SSH の設定ファイル /etc/ssh/sshd_config を編集して公開鍵の利用を開始し、 先に追加して設定した公開鍵を参照するようにします。 sshd_config の編集には root 権限が必要です。 「su」コマンドから root 権限を取得します。 このとき入力するパスワードは、root ユーザでログインするときのパスワードです。

編集を開始する前に、もしも不安ならファイルをバックアップしておきます。 ここでは sshd.bak なるファイルにしましたが、 バックアップファイルだと分かればどんな名前でも良いです。

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# vi sshd_config

vi は i で編集モード、esc でコマンドモードに戻ります。 編集を終えるときは、コマンドモードで :wq を入力してエンターで実行します。

次の項目のコメントをすべて解除して認証鍵によるログインを有効にし、先に設定した公開鍵の場所を設定します。 コメントを外すには「#」を消します。

…
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeyFile    .ssh/ahtorized_keys
…

次のような状態で保存して vi を終了します。

…
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeyFile    .ssh/ahtorized_keys
…
PasswordAuthentication no

設定の変更が完了したら、SSH のシステムに設定を再読み込みさせて変更した設定を反映します。

# /etc/rc.d/init.d/sshd reload Reloading sshd: [OK]

公開鍵の設定を完了したら接続試験へ

公開鍵の設定を完了したら、秘密鍵で接続をテストします。 関連して「パスワード認証を禁止する」や「root ユーザのログインを禁止する」という作業がありますが、 パスワード認証はこの時点では禁止しないでください。 秘密鍵でうまく認証できない時、再度設定できなくなってしまう恐れがあります。 (レンタルサーバなどの場合には簡単に復旧できることがありますけども)