最終更新日:2020年8月8日
CentOS で公開鍵認証による SSH ログイン設定を行う
はじめに
CentOS に SSH でログインする方法には、パスワード認証方式と公開鍵認証方式があります。
パスワード認証方式は、現在のインターネット環境では、サーバーの認証として脆弱であると言っても過言ではないでしょう。
特に、SSH で不正にログインされるとサーバーを乗っ取られる可能性があるため、これからの Web サーバ-の認証は公開鍵認証方式を採用すべきです。
この記事では、公開鍵認証による SSH のログイン設定方法をご紹介します。
目次
キーペアの作成
公開鍵および秘密鍵のキーペアをサーバ側で作成します。
作成する鍵方式は、SHA2 RSA 2048 ビットになります。
サーバー側でキーペアを作成して、秘密鍵をネットワークを経由してダウンロードする方法は、鍵の配送問題にあたるのではないかというご指摘が考えられます。確かにそういう面もあるのですが、ダウンロードは暗号化された通信であること、秘密鍵のダウンロードが普及しつつあることから問題ないと考えます。クライアント側で鍵を生成して、公開鍵をアップロードする方法も以下の記事に載せたので参考にしてください。
まず、root 権限を持ったユーザーで、サーバーに SSH でログインします。なお、キーペアの作成自体には root 権限は必要ありません。その後のシステム設定で root 権限が必要になります。
ログインしたら、以下のコマンドを実行します。パスフレーズには秘密鍵に設定するパスワードを入力します。パスフレーズに何も入力しなければ、秘密鍵利用時にパスフレーズの入力を要求されません。今回はパスフレーズを入力して設定を行います。
$ ssh-keygen -t rsa
.ssh ディレクトリに id_rsa という秘密鍵と、id_rsa.pub という公開鍵があるのを確認できます。
$ cd .ssh/ $ ls id_rsa id_rsa.pub
下記コマンドを実行して、公開鍵を公開鍵認証で使用できるようにします。
$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys
公開鍵認証のログイン設定
キーペアの作成ができたら、公開鍵認証でログインできるように設定します。
まず、root に切り替えてから、以下のファイルを編集します。
$ su - # vi /etc/ssh/sshd_config
以下の行のコメントを外して変更を保存します。
PubkeyAuthentication yes
SSH のサービスを再起動して、設定を反映させます。
# service sshd restart
一旦、ログアウトします。
秘密鍵のダウンロード
秘密鍵を WinSCP を使用してダウンロードします。
WinSCP を起動して [新規] をクリックして、新規セッションを開始します。
そして、以下のように入力して、[ログイン] をクリックしてサーバーに接続します。
画面右側のサーバーのディレクトリを、.ssh に移動して、id_rsa の秘密鍵をダウンロードします。
Tera Term を使用して公開鍵認証による SSH ログイン
Tera Term を使用して、公開鍵認証による SSH ログインを行います。
Tera Term を起動して、サーバー情報を入力し、[OK] をクリックします。
ユーザー名、秘密鍵のパスフレーズを入力し、秘密鍵にダウンロードした秘密鍵を設定して、[OK] をクリックします。
公開鍵認証で無事にログインできました。
公開鍵認証でのみログインするようにする
公開鍵認証による SSH ができることが確認できたので、公開鍵認証でのみログインできるように設定をします。
以下のファイルを編集します。
# vi /etc/ssh/sshd_config
パスワード認証を無効にして、変更を保存します。
PasswordAuthentication no
SSH サービスを再起動して設定を反映させます。
# service sshd restart
ログアウトして、パスワード認証によるログインが拒否されれば設定完了です。
PuTTYgen による PuTTY 用秘密鍵の作成
PuTTY や WinSCP は、公開鍵認証による SSH ログインをするには、PuTTYgen によって作成された PuTTY 用の秘密鍵が必要なため、PuTTY 用の秘密鍵を作成します。
PuTTYjp のサイトに行って、最新の PuTTYjp をダウンロードします。なお、PuTTY ごった煮版は脆弱性があるとのことなので、今後は PuTTYjp の利用を推奨します。
PuTTYjp をダウンロードして解凍したフォルダにある、puttygen.exe をダブルクリックして PuTTYgen を起動します。
PuTTYgen を起動したら、[Load] をクリックして秘密鍵をロードします。このとき、秘密鍵のパスフレーズが要求されるので、パスフレーズを入力します。
秘密鍵をロードできたら、[Save private key] をクリックして、PuTTY 用の秘密鍵を分かりやすいように、「id_rsa.ppk」として保存します。
PuTTY による公開鍵認証による SSH ログイン
puttyjp.exe をダブルクリックして、 PuTTY を起動します。
ホスト名とポート番号を設定します。
画面左側のメニューから、[接続] – [SSH] – [認証] を選択して、PuTTY 用の秘密鍵を指定して、[開く] をクリックします。
するとログイン名と、秘密鍵のパスフレーズを要求されるので入力すると、ログインに成功します。
WinSCP による公開鍵認証による SSH ログイン
WinSCP を起動して、[新規] からセッションを開始します。
以下のように接続情報を設定します。秘密鍵は、PuTTY 用の秘密鍵を指定します。
秘密鍵のパスフレーズが要求されるので、パスフレーズを入力して [OK] をクリックします。
すると無事にログイン成功です。
おわりに
CentOS で公開鍵認証による SSH ログイン設定方法を見てきましたが、いかがでしたでしょうか。
面倒だと思う方もいるかもしれません。
ですが、現在、インターネットでサーバーを公開するということは、もれなく攻撃対象になるということでもあるので、サーバーを守る上では公開鍵認証は必須といってもいいでしょう。
既存の環境があると大変でしょうが、徐々に公開鍵認証に移行することを推奨します。
最低限必要な CentOS セキュリティ設定
最低限必要な CentOS セキュリティ設定を以下の記事にまとめていますので、こちらもどうぞ。
スポンサーリンク
カテゴリー:Linux
コメントを残す