Arch LinuxでSSHサーバーを設定・セキュリティ強化する完全ガイド

Arch LinuxにOpenSSHサーバーをインストールし、鍵認証やポート変更などのセキュリティ設定を施す方法をステップバイステップで解説。初心者でも安全にSSH接続できるようになります。

Arch LinuxSSHopensshサーバー鍵認証セキュリティ2026/5/25

はじめに

このチュートリアルでは、Arch LinuxにOpenSSHサーバーを導入し、安全にリモート接続できるようにするための設定を解説します。最終的には、パスワード認証を無効化し、鍵認証のみでログインできるセキュアな環境を構築します。

目標

  • Arch LinuxにOpenSSHサーバー(sshd)をインストール・起動する
  • 公開鍵認証を設定し、パスワード認証を無効化する
  • SSHのポート番号を変更するなど、基本的なセキュリティ対策を施す
  • ファイアウォールでSSH接続を許可する
  • 前提条件

  • Arch Linuxがインストールされ、インターネットに接続されていること
  • root権限、またはsudoを使用できる一般ユーザーがあること
  • 基本的なターミナル操作ができること
  • Step-by-step

    1. OpenSSHのインストール

    まず、OpenSSHサーバーとクライアントをインストールします。

    sudo pacman -S openssh
    

    2. SSHサーバーの起動と自動起動設定

    インストール後、sshdサービスを起動し、システム起動時に自動で立ち上がるようにします。

    sudo systemctl start sshd
    sudo systemctl enable sshd
    

    3. ファイアウォールの設定(必要な場合)

    ファイアウォールを使用している場合は、SSHポート(デフォルト22)を許可します。以下はiptablesfirewalldの例です。

    iptablesの場合

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    sudo iptables-save > /etc/iptables/iptables.rules
    

    firewalldの場合

    sudo firewall-cmd --add-service=ssh --permanent
    sudo firewall-cmd --reload
    

    4. SSH鍵ペアの生成(クライアント側)

    リモートから接続するクライアントマシンで、SSH鍵ペアを生成します。すでに鍵がある場合はスキップしてください。

    ssh-keygen -t ed25519 -a 100
    

    推奨されるオプション:

  • -t ed25519: より安全で高速なEd25519鍵を使用
  • -a 100: KDFラウンド数を増やしてブルートフォース耐性を向上
  • 公開鍵は~/.ssh/id_ed25519.pubに保存されます。

    5. 公開鍵をサーバーに転送

    生成した公開鍵をサーバーの~/.ssh/authorized_keysに追加します。ssh-copy-idを使うと便利です。

    ssh-copy-id -i ~/.ssh/id_ed25519.pub ユーザー名@サーバーIP
    

    手動で行う場合は、サーバー上で以下のコマンドを実行します。

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "公開鍵の内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    

    6. SSHサーバーの設定変更

    サーバーの設定ファイル/etc/ssh/sshd_configを編集してセキュリティを強化します。

    sudo nano /etc/ssh/sshd_config
    

    以下の設定を追加・変更します。

    <h1>ポート番号を変更(例: 2222)</h1>
    Port 2222
    

    <h1>rootログインを禁止</h1> PermitRootLogin no

    <h1>パスワード認証を無効化(鍵認証のみ)</h1> PasswordAuthentication no

    <h1>公開鍵認証を有効化(デフォルトで有効)</h1> PubkeyAuthentication yes

    <h1>空パスワードを禁止</h1> PermitEmptyPasswords no

    <h1>接続を許可するユーザーを制限(例: youruser)</h1> AllowUsers youruser

    設定を変更したら、ファイルを保存して閉じます。

    7. 設定の反映

    設定を反映させるため、sshdサービスを再起動します。

    sudo systemctl restart sshd
    

    8. ファイアウォールのポート変更

    ポート番号を変更した場合は、ファイアウォールのルールも更新します。

    iptablesの場合

    sudo iptables -R INPUT 1 -p tcp --dport 2222 -j ACCEPT
    sudo iptables-save > /etc/iptables/iptables.rules
    

    firewalldの場合

    sudo firewall-cmd --remove-service=ssh --permanent
    sudo firewall-cmd --add-port=2222/tcp --permanent
    sudo firewall-cmd --reload
    

    9. 接続テスト

    新しい設定で接続できるかテストします。クライアントから以下のコマンドを実行します(ポートを変更した場合は-pオプション)。

    ssh -p 2222 ユーザー名@サーバーIP
    

    鍵認証が正しく設定されていれば、パスワードなしでログインできるはずです。

    動作確認

  • 鍵認証でログインできること
  • パスワード認証が拒否されること(誤った鍵で試すとよい)
  • rootログインが拒否されること
  • ポート番号が変更されていること(ポートスキャンなどで確認)
  • 発展

  • Fail2banの導入: 不正アクセスを自動でブロックするFail2banをインストールし、sshdのログを監視する設定を行う。
  • 2要素認証: Google Authenticatorなどを使用して、SSHに2要素認証を追加する。
  • SSHエージェント転送の制限: ForwardAgent no を設定して、エージェント転送を無効化または制限する。
  • 接続元IPの制限: AllowUsersMatch Address を使って特定のIPからのみ接続を許可する。
  • ログ監視: journalctl -u sshd でログを確認し、不審なアクセスを監視する。

  • *この記事はArch Linuxを実機で日常運用しているSioが、実際のインストール・設定経験に基づいてAI生成コンテンツをレビュー・補完しています。btrfsサブボリュームとLUKS暗号化環境で検証済みです。*

    まとめ

    このチュートリアルでは、Arch LinuxにOpenSSHサーバーをインストールし、鍵認証による安全なリモート接続を設定する方法を学びました。ポート変更やrootログイン禁止などの基本的なセキュリティ対策を施すことで、不正アクセスのリスクを大幅に低減できます。さらに発展的な設定を加えることで、より強固なセキュリティを実現できます。