SSH接続の設定方法徹底解説【2026年最新】

SSH接続を正しく設定すれば、リモートサーバーへの安全なアクセスが実現します。サーバー管理者であれば、SSHの基本設定からセキュリティ強化まで一通り理解しておく必要があります。本記事では、SSH接続の設定方法をステップバイステップで解説し、2026年現在の最新ベストプラクティスを紹介します。

目次

SSH接続の基礎知識

SSHとは何か

SSH接続の仕組み

SSH接続の設定手順

ローカル環境の準備

サーバー側のSSH設定

接続テストとトラブルシュー…

SSHセキュリティの強化方法

パスワード認証の無効化

公開鍵認証の設定

ファイアウォールとポート設定

SSH接続の応用テクニック

ポートフォワーディングの活用

SSH経由でのファイル転送

SSHトンネルの構築

SSH接続のトラブルシュー…

一般的なエラーと解決方法

パフォーマンス最適化

まとめ:SSH接続のベスト…

SSH接続の基礎知識

SSHとは何か

SSH(Secure Shell)は、ネットワークを介してリモートコンピューターに安全に接続するための暗号化プロトコルです。従来のTelnetやrloginと異なり、通信内容が暗号化されるため、パスワードやデータの盗聴を防ぐことができます。 SSHの主な特徴は以下の通りです:
  • 暗号化通信によるセキュリティ強化
  • 認証機能の多様性(パスワード認証・公開鍵認証)
  • ポートフォワーディングによる柔軟なネットワーク構築
  • ファイル転送機能(SCP・SFTP)

2026年現在、SSHはLinuxサーバー管理において欠かせないツールとなっており、クラウドサービス(AWS・GCP・Azure)でも標準的に利用されています。

SSH接続の仕組み

SSH接続は以下の3つの主要コンポーネントで構成されています:
  1. SSHクライアント:接続元のコンピューターにインストールされるソフトウェア(例:OpenSSHクライアント)
  2. SSHサーバー:接続先のコンピューターにインストールされるデーモン(例:sshd)
  3. SSHプロトコル:暗号化通信を実現する通信規約

接続プロセスは以下のステップで行われます:

  1. クライアントがサーバーに接続要求を送信
  2. サーバーが公開鍵を送信(初回接続時のみ)
  3. クライアントがサーバーの公開鍵を検証
  4. 認証方式に応じた認証処理(パスワード・公開鍵)
  5. 暗号化されたセッションの確立

SSHプロトコルには主に2つのバージョンがあります:

バージョン特徴セキュリティレベル
SSH-1古いバージョンで脆弱性が多い非推奨(2026年現在)
SSH-2現行の標準バージョンで強力な暗号化推奨

SSH-2は暗号化アルゴリズムとしてAES・ChaCha20・3DESなどをサポートしており、安全な通信を実現します。

SSH接続の設定手順

ローカル環境の準備

SSH接続を行う前に、ローカル環境(接続元のコンピューター)を準備します。以下の手順で進めてください:
  1. SSHクライアントのインストール
    • Linux/macOS:標準でインストール済み(OpenSSH)
    • Windows:以下の方法でインストール
      • Windows 10/11:標準機能として利用可能
      • 古いWindows:PuTTYのインストール
  2. SSHキーの生成(公開鍵認証を使用する場合)
    ssh-keygen -t ed25519 -C "your_email@example.com"

    このコマンドで、~/.ssh/ディレクトリに以下のファイルが生成されます:

    • id_ed25519:秘密鍵
    • id_ed25519.pub:公開鍵

    秘密鍵は絶対に他人に渡さないように注意してください。

  3. SSH configファイルの設定(任意)

    ~/.ssh/configファイルを編集して、接続設定を簡略化できます:

    Host myserver
          HostName example.com
          User yourusername
          Port 22
          IdentityFile ~/.ssh/id_ed25519

サーバー側のSSH設定

サーバー側(接続先のコンピューター)でSSHサーバー(sshd)を設定します:
  1. SSHサーバーのインストール
    • Ubuntu/Debian:sudo apt update && sudo apt install openssh-server
    • CentOS/RHEL:sudo yum install openssh-server
    • Amazon Linux:sudo yum install openssh-server
  2. SSHサーバーの起動と自動起動設定
    sudo systemctl start sshd
    sudo systemctl enable sshd

    自動起動を有効にすることで、サーバー再起動後もSSH接続が可能になります。

  3. SSH設定ファイルの編集

    /etc/ssh/sshd_configファイルを編集します。以下はセキュリティ強化のための設定例です:

    # SSHポートの変更(デフォルト22)
    Port 2222
    
    

    ルートログインの無効化

    PermitRootLogin no

    パスワード認証の無効化(公開鍵認証のみ許可)

    PasswordAuthentication no

    公開鍵認証の許可

    PubkeyAuthentication yes

    空のパスワードの禁止

    PermitEmptyPasswords no

    2分以内に認証が成功しない場合切断

    LoginGraceTime 120

    最大認証試行回数

    MaxAuthTries 3

    最大セッション数

    MaxSessions 10
  4. ファイアウォールの設定

    サーバーのファイアウォールでSSHポートを開放します:

    • UFW(Ubuntu):sudo ufw allow 2222/tcp
    • firewalld(CentOS/RHEL):sudo firewall-cmd --add-port=2222/tcp --permanent
    • iptables:sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
  5. SSHサーバーの再起動
    sudo systemctl restart sshd

接続テストとトラブルシュー…

SSH接続をテストし、問題が発生した場合の対処方法を紹介します:
  1. 接続テスト
    ssh -p 2222 yourusername@example.com

    接続に成功すると、パスワードまたは公開鍵認証が求められます。

  2. 一般的なエラーと解決方法
    エラー原因解決方法
    Connection refusedSSHサーバーが起動していないsshdを起動:sudo systemctl start sshd
    Permission denied (publickey)公開鍵認証に失敗サーバーの~/.ssh/authorized_keysに正しい公開鍵を追加
    Port 22: Connection timed outファイアウォールでポートがブロックされているファイアウォール設定を確認
    Host key verification failedサーバーのホストキーが変更された~/.ssh/known_hostsから古いキーを削除
  3. SSH接続の詳細情報取得

    接続時の詳細情報を取得するには、-vオプションを使用します:

    ssh -v -p 2222 yourusername@example.com

    これにより、接続プロセスの各ステップが表示され、問題の特定に役立ちます。

SSHセキュリティの強化方法

SSH接続のセキュリティを強化するための具体的な方法を紹介します。これらの設定は、サーバーへの不正アクセスを防ぐために必須です。

パスワード認証の無効化

パスワード認証はブルートフォース攻撃のリスクがあるため、公開鍵認証に置き換えることを推奨します。以下の手順で実施します:

  1. 公開鍵のサーバーへの配置

    ローカル環境で生成した公開鍵(id_ed25519.pub)をサーバーの~/.ssh/authorized_keysに追加します:

    cat ~/.ssh/id_ed25519.pub | ssh yourusername@example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
  2. sshd_configの編集

    /etc/ssh/sshd_configで以下の設定を行います:

    PasswordAuthentication no
    ChallengeResponseAuthentication no
  3. SSHサーバーの再起動
    sudo systemctl restart sshd
  4. パスワード認証のテスト

    パスワード認証が無効化されたことを確認します:

    ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no yourusername@example.com

    このコマンドではパスワード認証が失敗するはずです。

注意事項:公開鍵認証を設定する前に、必ずバックアップ用のSSH接続を確保しておいてください。公開鍵認証の設定に失敗すると、サーバーにアクセスできなくなる可能性があります。

公開鍵認証の設定

公開鍵認証はSSHセキュリティの gold standard です。以下の手順で設定します:

  1. 鍵ペアの生成

    ローカル環境で以下のコマンドを実行します:

    ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519

    このコマンドでは、以下の特徴を持つEd25519鍵を生成します:

    • -a 100:鍵生成時の反復回数を100に設定(ブルートフォース攻撃への耐性向上)
    • -f ~/.ssh/id_ed25519:鍵ファイル名を指定
  2. 鍵の配布

    生成した公開鍵をサーバーに配置します:

    ssh-copy-id -i ~/.ssh/id_ed25519.pub yourusername@example.com

    このコマンドにより、公開鍵がサーバーの~/.ssh/authorized_keysに自動的に追加されます。

  3. 鍵の権限設定

    SSHでは厳格なファイル権限が求められます。以下の権限を設定します:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/id_ed25519
  4. sshd_configの設定

    /etc/ssh/sshd_configで以下の設定を行います:

    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    AuthenticationMethods publickey
  5. SSHサーバーの再起動
    sudo systemctl restart sshd

鍵の管理に関するベストプラクティス:

  • 秘密鍵は暗号化して保存(パスフレーズの設定)
  • 鍵のバックアップを取得し、安全な場所に保管
  • 定期的に鍵をローテーション(1年ごとが推奨)
  • 不要になった鍵は速やかに削除

ファイアウォールとポート設定

SSH接続のセキュリティをさらに強化するために、ファイアウォールとポート設定を見直します:

  1. SSHポートの変更

    デフォルトのポート22は攻撃対象になりやすいため、ポート番号を変更します:

    Port 2222

    ポート番号は1024~65535の範囲で選択します。一般的なポート番号の例:

    • 2222:一般的な代替ポート
    • 22222:よりセキュアな選択肢
    • 30000:カスタムポート
  2. ファイアウォールの設定

    サーバーのファイアウォールでSSHポートを開放します:

    UFW(Ubuntu/Debian)

    sudo ufw allow 2222/tcp
    sudo ufw enable

    firewalld(CentOS/RHEL/Amazon Linux)

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

    iptables(汎用)

    sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
    sudo iptables-save | sudo tee /etc/sysconfig/iptables
  3. IP制限の設定

    特定のIPアドレスからのみ接続を許可することで、さらにセキュリティを強化できます:

    sudo ufw allow from 192.168.1.100 to any port 2222

    これにより、指定したIPアドレスからのみSSH接続が可能になります。

  4. ポートスキャンの防止

    ポートスキャンを防ぐために、以下の設定を追加します:

    # /etc/ssh/sshd_config
    LoginGraceTime 1
    MaxStartups 2:30:10

    これにより、不正な接続試行を迅速に切断します。

注意事項:ポートを変更した場合は、必ず新しいポートで接続テストを行ってから古いポートを閉じてください。ポート変更後に接続できなくなると、サーバーにアクセスできなくなる可能性があります。

SSH接続の応用テクニック

SSH接続の基本機能だけでなく、応用的なテクニックを活用することで、より効率的なリモート作業が可能になります。

ポートフォワーディングの活用

ポートフォワーディングを使用すると、ローカルマシンからリモートサーバー経由で別のサービスにアクセスできます。主に以下の3種類があります:

  1. ローカルポートフォワーディング

    ローカルマシンのポートをリモートサーバー経由で別のサーバーに転送します。

    ssh -L [local_port]:[destination_host]:[destination_port] [user]@[ssh_server]

    例:ローカルの8080ポートをリモートサーバー経由でデータベースサーバーの3306ポートに転送

    ssh -L 8080:db.example.com:3306 user@example.com

    このコマンドを実行すると、ローカルの8080ポートに接続すると、リモートサーバー経由でdb.example.com:3306に接続されます。

  2. リモートポートフォワーディング

    リモートサーバーのポートをローカルマシン経由で別のサーバーに転送します。

    ssh -R [remote_port]:[destination_host]:[destination_port] [user]@[ssh_server]

    例:リモートサーバーの8080ポートをローカルマシン経由でWebサーバーの80ポートに転送

    ssh -R 8080:web.example.com:80 user@example.com
  3. 動的ポートフォワーディング

    SOCKSプロキシを作成し、任意のポート経由で通信を転送します。

    ssh -D [local_port] [user]@[ssh_server]

    例:ローカルの1080ポートでSOCKSプロキシを作成

    ssh -D 1080 user@example.com

    このプロキシを使用すると、ブラウザなどのアプリケーションでインターネットアクセスを暗号化できます。

ポートフォワーディングの活用シーン:

  • 社内ネットワークにあるデータベースにリモートから安全にアクセス
  • ローカル開発環境からクラウド上の本番サーバーに接続
  • 制限されたネットワーク環境でのインターネットアクセス
  • リモートデスクトップ接続のセキュリティ強化

SSH経由でのファイル転送

SSHにはファイル転送機能が組み込まれており、安全なファイル転送が可能です。主なコマンドは以下の通りです:

  1. SCP(Secure Copy Protocol)

    SSHを使用してファイルをコピーします。

    # ローカル → リモート
    scp [options] [local_file] [user]@[host]:[remote_path]
    
    

    リモート → ローカル

    scp [options] [user]@[host]:[remote_file] [local_path]

    例:ローカルのdata.txtをリモートサーバーの/home/user/にコピー

    scp data.txt user@example.com:/home/user/

    例:リモートサーバーのbackup.tar.gzをローカルにダウンロード

    scp user@example.com:/home/user/backup.tar.gz .
  2. SFTP(SSH File Transfer Protocol)

    対話的なファイル転送が可能なコマンドです。

    sftp user@example.com

    SFTP接続後は以下のコマンドで操作できます:

    • put [local_file]:ローカルファイルをアップロード
    • get [remote_file]:リモートファイルをダウンロード
    • ls:リモートディレクトリの一覧表示
    • cd [directory]:リモートディレクトリの移動
    • lcd [directory]:ローカルディレクトリの移動
  3. rsync over SSH

    効率的なファイル同期にrsyncを使用します。

    rsync -avz -e ssh /local/path/ user@example.com:/remote/path/

    このコマンドでは、-aオプションでアーカイブモード、-vで詳細出力、-zで圧縮転送、-e sshでSSH経由の転送を指定しています。

ファイル転送時のベストプラクティス:

  • 機密ファイルは必ず暗号化して転送
  • 転送中のファイル改ざんを検知するために、事前にチェックサムを計算しておく
  • 大容量ファイルの転送は圧縮してから実施
  • 転送完了後はファイルの整合性を確認

SSHトンネルの構築

SSHトンネルを使用すると、ローカルマシンとリモートサーバー間で安全な通信路を確立できます。主な用途は以下の通りです:

  1. 暗号化されたHTTP接続

    ローカルのブラウザからHTTP接続を暗号化してリモートサーバー経由でインターネットにアクセスします。

    ssh -D 1080 -C -N user@example.com

    ブラウザのプロキシ設定でSOCKS5プロキシ(localhost:1080)を使用すると、全ての通信が暗号化されます。

  2. リモートデータベースへの接続

    ローカルマシンからリモートデータベースに安全に接続します。

    ssh -L 3306:localhost:3306 user@example.com

    このコマンドにより、ローカルの3306ポートに接続すると、リモートサーバー経由でデータベースに接続されます。

  3. リモートデスクトップ接続のセキュリティ強化

    RDP(Remote Desktop Protocol)をSSHトンネル経由で実行します。

    ssh -L 3389:localhost:3389 user@example.com

    その後、ローカルのリモートデスクトップクライアントでlocalhost:3389に接続します。

  4. VPNの代替としての利用

    SSHトンネルを使用して仮想プライベートネットワーク(VPN)のような機能を実現します。

    ssh -w 0:0 user@example.com

    このコマンドにより、トンネルインターフェース(tun)が作成され、ローカルとリモート間で安全なネットワーク接続が可能になります。

SSHトンネルの注意事項:

  • トンネルは常に暗号化されるため、セキュリティは高いが、パフォーマンスに影響する可能性あり
  • トンネル経由の通信はローカルマシンとリモートサーバー間でのみ暗号化されるため、リモートサーバーから先の通信は暗号化されない
  • トンネルを長時間維持すると、サーバー側でリソースが消費されるため、必要に応じて接続を切断する

SSH接続のトラブルシュー…

SSH接続で発生する一般的な問題とその解決方法を紹介します。これらのトラブルシューティング手法を身につけておくことで、迅速な問題解決が可能になります。

一般的なエラーと解決方法

SSH接続で発生する主なエラーとその解決策を表形式でまとめました:

エラーメッセージ原因解決方法
Permission denied (publickey)公開鍵認証に失敗
  1. ~/.ssh/authorized_keysに正しい公開鍵が追加されているか確認
  2. sshd_configでPubkeyAuthenticationがyesになっているか確認
  3. 鍵の権限が正しく設定されているか確認(700 for .ssh, 600 for authorized_keys)
Connection refusedSSHサーバーが起動していないか、ファイアウォールでブロックされている
  1. sshdが起動しているか確認:sudo systemctl status sshd
  2. ファイアウォールでポートが開放されているか確認
  3. ポート番号が正しいかsshd_configで確認
Host key verification failedサーバーのホストキーが変更されたか、known_hostsに古いキーが残っている
  1. ~/.ssh/known_hostsから古いキーを削除
  2. 再度接続して新しいキーを受け入れる
ssh: connect to host example.com port 22: Connection timed outネットワーク接続に問題があるか、サーバーがダウンしている
  1. pingでサーバーに到達できるか確認:ping example.com
  2. ポートスキャンツールでポート22が開いているか確認:nc -zv example.com 22
  3. サーバーのネットワーク設定を確認
Agent admitted failure to sign using the keySSHエージェントに鍵が追加されていない
  1. 鍵をSSHエージェントに追加:ssh-add ~/.ssh/id_ed25519
  2. SSHエージェントが起動しているか確認:eval $(ssh-agent)
PTY allocation request failed on channel 0疑似端末(PTY)の割り当てに失敗
  1. 接続時に-tオプションを使用:ssh -t user@example.com
  2. sshd_configでForceCommandが設定されていないか確認

パフォーマンス最適化

SSH接続のパフォーマンスを向上させるための設定とテクニックを紹介します:

    【編集・制作ポリシー】
    本記事はRoute Bloom編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。
    ABOUT ME
    たから
    サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営