SSH接続の設定方法【2026年6月更新】

SSH接続の設定方法【2026年6月更新】
SSH接続を正しく設定すれば、リモートサーバーへの安全なアクセスが実現します。サーバー管理者であれば、SSHの基本設定からセキュリティ強化まで、この手順で確実に実装してください。
—
目次
SSH接続の基本概念
SSHとは何か
SSH接続の仕組み
SSH接続の前提条件
必要な環境
SSHサーバーとクライアン…
SSH接続の設定手順
サーバー側の設定
クライアント側の設定
接続テストの実施
SSH接続のセキュリティ強化
パスワード認証の無効化
公開鍵認証の設定
ファイアウォールの設定
SSH接続のトラブルシュー…
接続エラーの原因と対処法
SSHサービスの再起動方法
まとめ
—
SSH接続の基本概念
SSHとは何か
SSH(Secure Shell)は、ネットワークを介してリモートコンピューターに安全に接続するための暗号化プロトコルです。1995年に開発されて以来、Telnetやrloginに代わる安全なリモートアクセス手段として広く利用されています。
SSH接続の主な特徴は以下の通りです:
- データの暗号化による盗聴防止
- 認証機能によるなりすまし防止
- ポートフォワーディングによるセキュアなトンネル構築
- ファイル転送(SCP/SFTP)機能
特に重要なのは、SSHがデフォルトでポート22を使用することです。このポート番号は設定で変更可能ですが、セキュリティ上の理由から推奨される変更方法について後述します。
SSH接続の仕組み
SSH接続は3つの主要な段階で構成されます:
- ハンドシェイクフェーズ:接続の開始時に暗号化方式の合意を行います
- 認証フェーズ:ユーザーの身元を確認します
- セッションフェーズ:実際のコマンド実行やファイル転送を行います
暗号化方式には、一般的に以下の2種類が使用されます:
| 暗号化方式 | 特徴 | 推奨度 |
|---|---|---|
| RSA | 鍵長2048bit以上で安全性が高い | ⭐⭐⭐⭐⭐ |
| ECDSA | 楕円曲線暗号で鍵サイズが小さい | ⭐⭐⭐⭐ |
| Ed25519 | 最新の暗号方式で高速かつ安全 | ⭐⭐⭐⭐⭐ |
出典: IETF RFC4253 – The Secure Shell (SSH) Transport Layer Protocol
—
SSH接続の前提条件
必要な環境
SSH接続を実施するには、以下の環境が必要です:
- SSHサーバー:接続を受け入れる側のマシン(Linux/Unix系OSが一般的)
- SSHクライアント:接続を開始する側のマシン(Windows/macOS/Linux)
- ネットワーク接続:両者が通信可能なネットワーク環境
- 管理者権限:SSHサーバーの設定変更にはroot権限が必要
主要なOSにおけるSSH関連パッケージは以下の通りです:
| OS | SSHサーバーパッケージ | SSHクライアントパッケージ |
|---|---|---|
| Ubuntu/Debian | openssh-server | openssh-client |
| CentOS/RHEL | openssh-server | openssh-clients |
| macOS | (標準搭載) | (標準搭載) |
| Windows 10/11 | OpenSSH Server(オプション機能) | OpenSSH Client(標準搭載) |
SSHサーバーとクライアン…
SSH接続におけるサーバーとクライアントの役割を明確に理解しておくことが重要です:
- SSHサーバー(sshd):
- ポート22(デフォルト)で接続を待ち受ける
- 接続要求を受け取り、認証処理を行う
- 設定ファイルは通常 /etc/ssh/sshd_config に保存
- サービス名は「sshd」または「ssh」
- SSHクライアント(ssh):
- サーバーへの接続を開始する
- コマンドラインから直接実行可能
- 設定ファイルは通常 ~/.ssh/config に保存
- GUIクライアントも存在(例:PuTTY、MobaXterm)
Windows環境では、以下の方法でSSHサーバーを有効化できます:
- 設定 → アプリ → オプション機能 → 機能の追加
- 「OpenSSH Server」を選択してインストール
- サービス管理から「OpenSSH SSH Server」を起動
—
SSH接続の設定手順
サーバー側の設定
SSHサーバーの設定は /etc/ssh/sshd_config ファイルで行います。以下に基本的な設定手順を示します:
- 設定ファイルのバックアップ
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak - 設定ファイルの編集
sudo vi /etc/ssh/sshd_config - 基本設定の変更
以下のパラメータを編集します:
パラメータ 推奨値 説明 Port 2222(任意のポート) デフォルトポート22から変更することでブルートフォース攻撃を軽減 Protocol 2 SSHv2のみを使用(SSHv1は脆弱性あり) PermitRootLogin no rootユーザーの直接ログインを禁止 PasswordAuthentication no パスワード認証を無効化(公開鍵認証のみ) PubkeyAuthentication yes 公開鍵認証を有効化 ClientAliveInterval 300 接続維持のためのハートビート間隔(秒) ClientAliveCountMax 2 ハートビートに応答しない場合の最大回数 - 設定の反映
sudo systemctl restart sshd - ファイアウォールの設定
新しいポート(例:2222)を開放します:
sudo ufw allow 2222/tcp # Ubuntu/Debian sudo firewall-cmd --add-port=2222/tcp --permanent # CentOS/RHEL sudo firewall-cmd --reload
設定変更後は必ずsshdサービスを再起動してください。設定ミスにより接続できなくなった場合は、バックアップした設定ファイルを使用して復旧します。
クライアント側の設定
SSHクライアントの設定は主に以下の2つの方法で行います:
- コマンドラインからの直接接続
ssh -p 2222 username@server_ip_addressこの方法では、毎回接続時にポート番号とユーザー名、IPアドレスを指定する必要があります。
- 設定ファイルによる接続設定
~/.ssh/config ファイルを編集して接続設定を保存します:
Host myserver HostName server_ip_address Port 2222 User username IdentityFile ~/.ssh/id_ed25519この設定により、以下のコマンドで簡単に接続できます:
ssh myserver
公開鍵認証を使用する場合は、以下の手順で鍵を生成します:
- 鍵ペアの生成
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "your_email@example.com"鍵の種類には以下の選択肢があります:
- -t rsa -b 4096:RSA鍵(互換性が高い)
- -t ecdsa -b 521:ECDSA鍵(鍵サイズが小さい)
- -t ed25519:Ed25519鍵(最新で安全性が高い)
- パスフレーズの設定
鍵にパスフレーズを設定することで、万が一鍵が漏洩した場合でもセキュリティを保護できます。パスフレーズは10文字以上で設定することを推奨します。
- 公開鍵のサーバーへの転送
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 username@server_ip_addressこのコマンドにより、公開鍵がサーバーの ~/.ssh/authorized_keys に追加されます。
接続テストの実施
SSH接続が正しく設定されたかどうかを確認するには、以下の手順でテスト接続を行います:
- 基本的な接続テスト
ssh -v -p 2222 username@server_ip_address-vオプションにより詳細なログが表示され、接続プロセスを確認できます。
- 接続時間の測定
time ssh -p 2222 username@server_ip_address "echo 'Connection test'"接続から切断までの時間を測定し、パフォーマンスを確認します。
- ポートフォワーディングのテスト
ssh -L 8080:localhost:80 -p 2222 username@server_ip_addressローカルの8080ポートをリモートの80ポートに転送し、Webサーバーへのアクセスをテストします。
- ファイル転送のテスト
scp -P 2222 /path/to/local/file username@server_ip_address:/path/to/remote/directorySCPコマンドによりファイル転送が正常に動作するか確認します。
接続テストでエラーが発生した場合は、以下のポイントを確認してください:
- ファイアウォールのポート開放が正しく行われているか
- sshdサービスが正常に起動しているか(sudo systemctl status sshd)
- 設定ファイルに構文エラーがないか(sudo sshd -t)
- 接続先のIPアドレスとポート番号が正しいか
—
SSH接続のセキュリティ強化
パスワード認証の無効化
SSH接続のセキュリティを向上させるためには、パスワード認証を無効化し、公開鍵認証のみを許可することが最も重要です。パスワード認証はブルートフォース攻撃の対象となりやすく、脆弱なパスワードであれば簡単に突破されてしまいます。
パスワード認証を無効化する手順は以下の通りです:
- sshd_configの編集
sudo vi /etc/ssh/sshd_config以下の行を設定します:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no - sshdサービスの再起動
sudo systemctl restart sshd - パスワード認証の動作確認
パスワード認証が無効化されたことを確認するには、以下のコマンドを実行します:
sudo grep -i "passwordauthentication" /etc/ssh/sshd_config出力が「no」となっていることを確認してください。
パスワード認証を無効化することで、以下のセキュリティ上のメリットがあります:
- ブルートフォース攻撃に対する耐性が向上
- パスワード管理の手間が軽減
- 二要素認証(2FA)との組み合わせが容易
注意点として、公開鍵認証を設定するまではパスワード認証を無効化しないでください。公開鍵認証が正しく動作しない場合、サーバーにアクセスできなくなる可能性があります。
公開鍵認証の設定
公開鍵認証は、SSH接続における最も安全な認証方法です。鍵ペア(公開鍵と秘密鍵)を使用して認証を行う仕組みで、鍵の長さと暗号化方式によってセキュリティレベルが決まります。
公開鍵認証を設定する手順は以下の通りです:
- 鍵ペアの生成(クライアント側)
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "your_email@example.com"オプションの説明:
- -t ed25519:鍵の種類(Ed25519が最も安全)
- -a 100:鍵生成時の反復回数(100回以上を推奨)
- -f ~/.ssh/id_ed25519:鍵ファイルの保存先
- -C “your_email@example.com”:コメント(任意)
- 鍵ファイルの権限設定
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pubSSHは厳格な権限チェックを行うため、適切な権限設定が必要です。
- 公開鍵のサーバーへの転送
以下のいずれかの方法で公開鍵をサーバーに転送します:
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip_addressまたは
cat ~/.ssh/id_ed25519.pub | ssh username@server_ip_address "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" - sshd_configの編集(サーバー側)
sudo vi /etc/ssh/sshd_config以下の設定を確認または追加します:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no - sshdサービスの再起動
sudo systemctl restart sshd - 接続テスト
ssh -i ~/.ssh/id_ed25519 username@server_ip_address
鍵の種類と長さによる安全性の比較は以下の通りです:
| 鍵の種類 | 鍵長 | 安全性 | 互換性 | 生成速度 |
|---|---|---|---|---|
| RSA | 2048bit以上 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| ECDSA | 256bit以上 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Ed25519 | 256bit | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
鍵の管理に関するベストプラクティス:
- 秘密鍵は絶対に他者に漏洩させない
- 鍵にパスフレーズを設定する(10文字以上)
- 定期的に鍵をローテーションする(1年ごとを推奨)
- 鍵のバックアップを取得する(暗号化されたストレージに保存)
- 不要になった鍵は速やかに削除する
ファイアウォールの設定
SSH接続のセキュリティをさらに強化するためには、ファイアウォールによるアクセス制限が効果的です。ファイアウォールを適切に設定することで、許可されたIPアドレスからのみSSH接続を受け入れることができます。
以下に主要なOSにおけるファイアウォール設定方法を示します:
Ubuntu/Debian(ufw)
- ufwの有効化
sudo ufw enable - SSH接続の許可
sudo ufw allow from trusted_ip_address to any port 2222 proto tcptrusted_ip_addressには、接続を許可するIPアドレスを指定します。
- その他のポートの拒否
sudo ufw default deny incomingデフォルトで着信接続を拒否し、明示的に許可したポートのみを開放します。
- ファイアウォールの状態確認
sudo ufw status verbose
CentOS/RHEL(firewalld)
- firewalldの有効化
sudo systemctl enable --now firewalld - SSH接続の許可
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="trusted_ip_address" port port="2222" protocol="tcp" accept' --permanent sudo firewall-cmd --reload - その他のポートの拒否
sudo firewall-cmd --set-default-zone=drop - ファイアウォールの状態確認
sudo firewall-cmd --list-all
Windows(Windows Defender ファイアウォール)
- ファイアウォールの設定画面を開く
コントロールパネル → システムとセキュリティ → Windows Defender ファイアウォール → 詳細設定
- 着信規則の作成
新しい規則 → ポート → TCP → 特定のローカルポート:2222 → 接続を許可する → 名前を設定
- IPアドレス制限の追加
作成した規則を右クリック → プロパティ → 範囲タブ → リモートIPアドレスに許可するIPを指定
ファイアウォール設定のベストプラクティス:
- SSH接続には専用のポート(デフォルトの22から変更)を使用する
- 接続を許可するIPアドレスを厳格に制限する
- 不要なポートは完全に閉鎖する
- ファイアウォールのログを定期的に確認する
- VPN経由での接続を検討する
ファイアウォール設定により、SSH接続のセキュリティを大幅に向上させることができますが、以下の注意点があります:
- ファイアウォールの設定ミスにより、サーバーへのアクセスができなくなる可能性がある
- IPアドレスが動的に変化する環境では、柔軟な設定が必要
- クラウド環境では、クラウドプロバイダーのファイアウォール(セキュリティグループ)も併用する
—
SSH接続のトラブルシュー…
接続エラーの原因と対処法
SSH接続時に発生する一般的なエラーとその対処法を以下にまとめます。エラーの原因を特定することで、迅速な解決が可能になります。
| エラータイプ | エラーメッセージ | 主な原因 | 対処法 |
|---|---|---|---|
| 接続拒否 | Connection refused | SSHサービスが起動していない ファイアウォールでポートが閉鎖されている ポート番号が間違っている |
|
| 接続タイムアウト | Connection timed out | ネットワーク経路に問題がある サーバーがダウンしている ファイアウォールで接続がブロックされている |
|
| 認証失敗 | Permission denied (publickey) | 公開鍵認証が正しく設定されていない 秘密鍵のパスが間違っている 鍵の権限が不適切 |
|
| パスワード認証が機能しない | Permission denied (password) | sshd_configでPasswordAuthenticationがnoに設定されている PAMが無効化されている |
|
| 鍵が拒否される | Server refused our key | authorized_keysファイルに鍵が追加されていない sshd_configのAuthorizedKeysFile設定が間違っている |
|
| 接続が切断される | Connection closed by server | sshd_configのClientAliveInterval設定が短すぎる サーバーのリソース不足 |
|
具体的なエラー解決手順の例:
- 「Connection refused」エラーの解決
- sshdサービスの状態を確認します:
sudo systemctl status sshdアクティブでない場合は起動します:
sudo systemctl start sshd - ポート2222が開放されているか確認します:
sudo ss -tulnp | grep sshdポートが異なる場合はsshd_configを編集し、再起動します。
ABOUT ME
- sshdサービスの状態を確認します:




