目次
エラーの概要
SSH には「ポートフォワーディング(ポート転送)」機能があり、ローカルやリモートのポートを経由して安全に接続することが可能です。
しかし、設定をしても ポートフォワーディングが動作しない というトラブルが発生することがあります。
本記事では、その代表的な原因と解決方法を解説します。
主な原因と解決方法
1. コマンドの指定ミス
ssh -L
または ssh -R
の書式を誤ると、転送が機能しません。
特に localhost
と 0.0.0.0
の指定を間違えるケースが多いです。
対処方法
# ローカルフォワード(例: localhost:8080 → remote:80)
ssh -L 8080:localhost:80 user@remote
# リモートフォワード(外部アクセスも許可する場合)
ssh -R 0.0.0.0:9090:localhost:22 user@remote
2. サーバ側の設定 (sshd_config
)
サーバの /etc/ssh/sshd_config
にて以下の設定が無効だと、ポートフォワーディングは利用できません。
AllowTcpForwarding yes
GatewayPorts yes
AllowTcpForwarding no
→ ポートフォワーディング禁止GatewayPorts no
→ リモートフォワードがローカル接続のみ許可
対処方法
設定を有効にし、sshd を再起動します。
sudo systemctl restart sshd
3. ファイアウォールやセキュリティグループ
- サーバのファイアウォール(iptables, firewalld)や、クラウド環境(AWS/GCP/Azure)のセキュリティグループで、該当ポートがブロックされている場合があります。
対処方法
対象ポートを開放してください。
# firewalld の例
sudo firewall-cmd --add-port=9090/tcp --permanent
sudo firewall-cmd --reload
4. SELinux / AppArmor の制限
セキュリティ機構により TCP フォワーディングが制限されることがあります。
対処方法
一時的に無効化して挙動を確認します。
# SELinuxの状態確認
getenforce
# 一時的に無効化
sudo setenforce 0
まとめ
SSH のポートフォワーディングが動作しない場合は、次の順で確認しましょう。
ssh -L
/ssh -R
の書式ミスがないか- サーバ側
sshd_config
のAllowTcpForwarding
/GatewayPorts
が有効か - ファイアウォールやクラウドのセキュリティ設定
- SELinux / AppArmor の制限
これらを順に見直せば、ほとんどのケースで解決できます。
よくあるエラーと解決方法まとめ
あわせて読みたい


【完全版】SSHエラー大全|接続できない原因と解決方法まとめ
SSH(Secure Shell)はLinuxサーバー管理に欠かせないリモート接続の手段ですが、実際の運用では「接続できない」「認証に失敗する」「タイムアウトする」など、さまざ…