SSHによる安全な接続と鍵認証の設定方法

Linuxサーバーを運用するうえで、SSH(Secure Shell)による安全な接続は必須の知識です。
特に、パスワード認証ではなく鍵認証を利用することで、セキュリティレベルを大幅に向上させることができます。

本記事では、SSHの基本から、鍵認証の仕組み、実際の設定手順、セキュリティ強化のポイントまでを体系的に解説します。


SSHとは何か

SSH(Secure Shell)とは、ネットワーク越しに安全にサーバーへ接続・操作するためのプロトコルです。

SSHを使うことで、以下が可能になります。

  • サーバーへのリモートログイン
  • コマンドの実行
  • ファイル転送(scp / sftp)
  • ポートフォワーディング

通信内容はすべて暗号化されるため、盗聴や改ざんのリスクを抑えられます。


パスワード認証の問題点

SSHの初期設定では、ユーザー名+パスワードによる認証が使われることが多いですが、以下のリスクがあります。

  • 総当たり攻撃(ブルートフォースアタック)
  • 弱いパスワードの使用
  • パスワード漏えい時の即侵入

これらを防ぐために推奨されるのが鍵認証です。


鍵認証の仕組み

SSH鍵認証では、以下の2つの鍵を使用します。

  • 秘密鍵(private key):自分のPCに保管(絶対に外部に出さない)
  • 公開鍵(public key):接続先サーバーに配置

接続時の流れは次の通りです。

  1. クライアントが接続要求
  2. サーバーが公開鍵に対応する秘密鍵を持っているか確認
  3. 一致すれば認証成功

パスワードを送信しないため、非常に安全です。


SSH鍵ペアの作成(クライアント側)

まずは、接続元のPCで鍵ペアを作成します。

ssh-keygen -t ed25519

主な質問項目は以下の通りです。

  • 保存先(Enterでデフォルト)
  • パスフレーズ(設定推奨)

作成されるファイル例

  • ~/.ssh/id_ed25519(秘密鍵)
  • ~/.ssh/id_ed25519.pub(公開鍵)

公開鍵をサーバーに登録する

方法1:ssh-copy-id(推奨)

ssh-copy-id user@server_ip

これにより、公開鍵が自動でサーバーの以下に追加されます。

~/.ssh/authorized_keys

方法2:手動で設定する場合

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

鍵認証でSSH接続する

鍵が正しく設定されていれば、次のコマンドでログインできます。

ssh user@server_ip

パスワード入力を求められず、鍵(+パスフレーズ)で認証されます。


SSH設定のセキュリティ強化

SSH設定ファイルの編集

sudo nano /etc/ssh/sshd_config

以下の設定を推奨します。

PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes

設定後、SSHを再起動します。

sudo systemctl restart sshd

注意
鍵認証でログインできることを確認してから、パスワード認証を無効化してください。


よくあるトラブルと対処法

Permission denied (publickey)

  • ~/.sshauthorized_keys のパーミッション不正
  • 公開鍵が正しく登録されていない

鍵ファイルの権限エラー

chmod 600 ~/.ssh/id_ed25519

まとめ

SSH鍵認証を導入することで、以下のメリットがあります。

  • パスワード不要で安全
  • 不正ログイン対策として非常に有効
  • サーバー運用の基本スキルとして必須

Linuxサーバーを扱うなら、SSH鍵認証+パスワード認証無効化は最低限実施しておきたい設定です。

テックジム|プログラミング教材の一括まとめ買い

プログラミング教材をまとめて効率よく学びたい方におすすめ!
学習の時間とコストを節約できます。


今すぐチェックする

LINUXLinux基礎
スポンサーリンク
シェアする
タイトルとURLをコピーしました