鍵認証とパスワード認証の特徴
パスワード認証の場合
手軽にSSH接続を行うにはパスワード認証にて接続することが可能です。この時、最低限のセキュリティとして使用ポートの変更とrootログインの禁止が必要です。ただし、パスワード認証の場合は分かりやすいパスワードとしていた場合、不正ログインの危険があります。
鍵認証の場合
鍵認証はRSA暗号を使用した、公開鍵-秘密鍵暗号方式で認証が行われます。この場合、事前にサーバーに公開鍵を渡しておき、秘密鍵を持つ人でないとログイン出来ないように設定します。パスワードと違い、正しく作られた秘密鍵を偽造することは不可能なため安全性が高いですが、秘密鍵の流出が発生すれば不正ログインされる可能性があります。
パスワード付鍵認証の場合
秘密鍵の流出対策として、鍵自体にパスワード保護をかけることが出来ます。これを利用することで疑似的にパスワードと鍵のハイブリッド認証が可能になります。
鍵認証設定の流れ
ユーザー側の設定
TeraTermにて鍵生成を行います。詳細な手順はこちらのサイトの手順で可能です。生成した秘密鍵と公開鍵は任意の場所に保存しておきます。
サーバー側の設定
パスワードログインしている状態を前提に設定します。まず、ユーザーのホームディレクトリで公開鍵(id_rsa.pub)を送信しておきます。TeraTerm上にドラッグ&ドロップ後、SCPを選択することで送信出来ます。
送信したファイルを確認後、ホームディレクトリに隠しフォルダとして".ssh"を作成し、その中に公開鍵を"authorized_keys"としてリネームして移動します。この時、".ssh"および"authorized_keys"の所有者はログインユーザーとします。".ssh"のパーミッションは700、"authorized_keys"のパーミッションは600(ユーザーにアクセス件を与える必要があるため)644としておきます(2022/8/9修正)。
[hoge@webserver ~]$ cd /home/hoge/ [hoge@webserver ~]$ ls id_rsa.pub [hoge@webserver ~]$ mkdir /home/hoge/.ssh [hoge@webserver ~]$ chmod 700 /home/hoge/.ssh [hoge@webserver ~]$ mv ./id_rsa.pub ./.ssh/authorized_keys [hoge@webserver ~]$ ls [hoge@webserver ~]$ ls ./.ssh authorized_keys [hoge@webserver ~]$ chmod 644 ./.ssh/authorized_keys #2022/8/9修正
最後にsshdの設定変更を行います。
[hoge@webserver ~]$ sudo vim /etc/ssh/sshd_config
sshd_configの変更内容(抜粋)
... 48 PubkeyAuthentication yes ... 70 PasswordAuthentication no ...
ここでsshdサービスを再起動することで鍵認証状態となります。現状の通信は鍵認証にて上手くログイン出来ることを確認出来るまで接続したままとしておきます。
[hoge@webserver ~]$ sudo systemctl restart sshd
以上で接続確認が出来れば設定完了です。