AWSEC2の使用
リモートマシンからAWSへのリバースSSHトンネル:
/usr/bin/autossh -M 0 -N -R 19999:localhost:22 [email protected] -v -i cloud.pem
AWSセキュリティグループにポート19999を追加しました。
TelnetでAWSに接続できるかどうかを確認しました:
telnet: Unable to connect to remote Host: Connection refused
ただし、セキュリティグループのポート19999を削除すると、別の応答が返されます。
telnet: Unable to connect to remote Host: Connection timed out
したがって、問題はAWSホストにあり、別のマシンのファイアウォールにはないと思います。
次に、接続に応じて、AWS側でsshd
トンネルが開始されているかどうかを確認します。 netstat
は、サービスがリッスンしていることを示しています。
tcp 0 0 127.0.0.1:19999
それでも、接続が拒否されたというメッセージが表示されます。他に何を分析できますか? AWSマシンでsshd
ログが見つかりませんでした。 /var/log/secure
これらの失敗した接続試行はログに記録されません。
私が理解していることから、EC2インスタンスへのリバーストンネルを実行してから、外部クライアントがその指定されたポート19999に接続できるようにする必要があります。
まず、netstatでわかるように、提供されているようにコマンドを実行すると、ポートはループバックインターフェイスでリッスンします。したがって、これを部外者に対して機能させるには、次のようにバインドアドレスを付加する必要があります。
/usr/bin/autossh -M 0 -N -R 0.0.0.0:19999:localhost:22 [email protected] -v -i cloud.pem
これでもエラーが発生するため、実際に探しているのは、EC2で実行されているsshdサーバーで有効になっているGatewayPortsディレクティブです。
/ etc/ssh/sshd_configを編集して、次のことを確認する必要があります。
GatewayPorts clientspecified
構成内で定義します。 sshdサーバーを再起動し、上記のコマンドを使用します。これのより詳細な説明は次の場所にあります: 逆sshポート転送で企業ファイアウォールをバイパスする