Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから
公開日:2014年1月18日

CentOS で公開鍵認証による SSH ログイン設定を行う

はじめに

CentOS に SSH でログインする方法には、パスワード認証方式と公開鍵認証方式があります。

パスワード認証方式は、現在のインターネット環境では、サーバーの認証として脆弱であると言っても過言ではないでしょう。

特に、SSH で不正にログインされるとサーバーを乗っ取られる可能性があるため、これからの Web サーバ-の認証は公開鍵認証方式を採用すべきです。

この記事では、公開鍵認証による SSH のログイン設定方法をご紹介します。

  • キーペアの作成
  • 公開鍵認証のログイン設定
  • 秘密鍵のダウンロード
  • Tera Term を使用して公開鍵認証による SSH ログイン
  • 公開鍵認証でのみログインするようにする
  • PuTTYgen による PuTTY 用秘密鍵の作成
  • PuTTY による公開鍵認証による SSH ログイン
  • WinSCP による公開鍵認証による SSH ログイン

キーペアの作成

公開鍵および秘密鍵のキーペアをサーバ側で作成します。

作成する鍵方式は、SHA2 RSA 2048 ビットになります。


サーバー側でキーペアを作成して、秘密鍵をネットワークを経由してダウンロードする方法は、鍵の配送問題にあたるのではないかというご指摘が考えられます。確かにそういう面もあるのですが、ダウンロードは暗号化された通信であること、秘密鍵のダウンロードが普及しつつあることから問題ないと考えます。クライアント側で鍵を生成して、公開鍵をアップロードする方法も以下の記事に載せたので参考にしてください。

まず、root 権限を持ったユーザーで、サーバーに SSH でログインします。なお、キーペアの作成自体には root 権限は必要ありません。その後のシステム設定で root 権限が必要になります。

ログインしたら、以下のコマンドを実行します。パスフレーズには秘密鍵に設定するパスワードを入力します。パスフレーズに何も入力しなければ、秘密鍵利用時にパスフレーズの入力を要求されません。今回はパスフレーズを入力して設定を行います。

.ssh ディレクトリに id_rsa という秘密鍵と、id_rsa.pub という公開鍵があるのを確認できます。

下記コマンドを実行して、公開鍵を公開鍵認証で使用できるようにします。

公開鍵認証のログイン設定

キーペアの作成ができたら、公開鍵認証でログインできるように設定します。

まず、root に切り替えてから、以下のファイルを編集します。

以下の行のコメントを外して変更を保存します。

SSH のサービスを再起動して、設定を反映させます。

一旦、ログアウトします。

秘密鍵のダウンロード

秘密鍵を WinSCP を使用してダウンロードします。

WinSCP を起動して [新規] をクリックして、新規セッションを開始します。

そして、以下のように入力して、[ログイン] をクリックしてサーバーに接続します。

pic01

画面右側のサーバーのディレクトリを、.ssh に移動して、id_rsa の秘密鍵をダウンロードします。

pic02

Tera Term を使用して公開鍵認証による SSH ログイン

Tera Term を使用して、公開鍵認証による SSH ログインを行います。

Tera Term を起動して、サーバー情報を入力し、[OK] をクリックします。

pic03

ユーザー名、秘密鍵のパスフレーズを入力し、秘密鍵にダウンロードした秘密鍵を設定して、[OK] をクリックします。

pic04

公開鍵認証で無事にログインできました。

pic05

公開鍵認証でのみログインするようにする

公開鍵認証による SSH ができることが確認できたので、公開鍵認証でのみログインできるように設定をします。

以下のファイルを編集します。

パスワード認証を無効にして、変更を保存します。

SSH サービスを再起動して設定を反映させます。

ログアウトして、パスワード認証によるログインが拒否されれば設定完了です。

PuTTYgen による PuTTY 用秘密鍵の作成

PuTTY や WinSCP は、公開鍵認証による SSH ログインをするには、PuTTYgen によって作成された PuTTY 用の秘密鍵が必要なため、PuTTY 用の秘密鍵を作成します。

PuTTYjp のサイトに行って、最新の PuTTYjp をダウンロードします。なお、PuTTY ごった煮版は脆弱性があるとのことなので、今後は PuTTYjp の利用を推奨します。

PuTTYjp をダウンロードして解凍したフォルダにある、puttygen.exe をダブルクリックして PuTTYgen を起動します。

PuTTYgen を起動したら、[Load] をクリックして秘密鍵をロードします。このとき、秘密鍵のパスフレーズが要求されるので、パスフレーズを入力します。

pic06

秘密鍵をロードできたら、[Save private key] をクリックして、PuTTY 用の秘密鍵を分かりやすいように、「id_rsa.ppk」として保存します。

pic07

PuTTY による公開鍵認証による SSH ログイン

puttyjp.exe をダブルクリックして、 PuTTY を起動します。

ホスト名とポート番号を設定します。

pic08

画面左側のメニューから、[接続] – [SSH] – [認証] を選択して、PuTTY 用の秘密鍵を指定して、[開く] をクリックします。

pic09

するとログイン名と、秘密鍵のパスフレーズを要求されるので入力すると、ログインに成功します。

pic11

WinSCP による公開鍵認証による SSH ログイン

WinSCP を起動して、[新規] からセッションを開始します。

以下のように接続情報を設定します。秘密鍵は、PuTTY 用の秘密鍵を指定します。

pic13

秘密鍵のパスフレーズが要求されるので、パスフレーズを入力して [OK] をクリックします。

pic14

すると無事にログイン成功です。

pic15

おわりに

CentOS で公開鍵認証による SSH ログイン設定方法を見てきましたが、いかがでしたでしょうか。

面倒だと思う方もいるかもしれません。

ですが、現在、インターネットでサーバーを公開するということは、もれなく攻撃対象になるということでもあるので、サーバーを守る上では公開鍵認証は必須といってもいいでしょう。

既存の環境があると大変でしょうが、徐々に公開鍵認証に移行することを推奨します。


スポンサーリンク




カテゴリー:Linux

Twitter でも、いろんな情報を発信しています。



コメントを残す

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

CAPTCHA