カスタムSSHポートを使用してローカルポートからのすべてのリクエストをリモートAmazon EC2インスタンスのポートに転送する方法

カスタムSSHポートを使用してローカルポートからのすべてのリクエストをリモートAmazon EC2インスタンスのポートに転送する方法

ローカルポート8888からポート8888へのすべてのリクエストをリモートAmazon EC2インスタンスに転送しようとしています。唯一の違いは、私のEC2インスタンスがカスタムポート56129でSSHを実行していることです。

ローカルシステムでec2インスタンスを正常にpingできますが、ローカルポートからの要求をec2インスタンスのポートに転送しようとすると、次の結果が表示されます。

チャンネル2:オープン失敗:管理禁止:オープン失敗

次のコマンドを使用しています。

ssh -i <pem key> -NfL 8888:localhost:8888 <user>@<instance ip> -p 56129

その後、パスワードを求めます。パスワードを承認するとメッセージはありません。ただし、ブラウザでlocalhost:8888を開くと、次のエラーが発生します。

チャンネル2:オープン失敗:管理禁止:オープン失敗

いくつかの観察 -

  • パスワードを使用して正常に実行中ですssh -i <pem key> <user>@<instance ip> -p 56129

  • EC2インスタンスのポート8888でJupyter Notebookを実行しています。インスタンスにSSHで接続した後、カールlocalhost:8888は何も返しません。

答え1

必要なものを達成するには、ローカルアドレスをバインドする必要があると思います。

ssh -i <pem key> -NfL localhost:8888:localhost:8888 <user>@<instance ip> -p 56129

または

ssh -i <pem key> -NfL localhost:8888:<instanceip>:56129 <user>@<instance ip>

なぜなら、あなたが達成したいことが100%明確ではないからです。

試験用

telnet ipaddress portnumber

これにより、事前に接続または接続せずに実行時に確認できます。

答え2

このメッセージは、sshd設定が TCP ポート転送を許可しないことを (リモート) サーバーに通知します。

sshdこのオプションは、リモートサーバーの構成(通常は/etc/ssh/sshd_config)で有効にする必要があります。

AllowTcpForwarding

TCP転送が許可されるかどうかを指定します。使用可能なオプションは、yes(デフォルト)またはallTCP転送を許可し、noすべてのTCP転送をブロックし、localローカル(ssh(1)の観点から)転送のみを許可するか、リモートremote転送のみを許可します。ユーザーはいつでも独自のフォワーダーをインストールできるため、TCP転送を無効にしてもユーザーがシェルアクセスを拒否しない限り、セキュリティは向上しません。

上記のデフォルトはDebianシステム用であり、AWSではデフォルトではない可能性がありますsshd。このオプションは/または少なくともポート転送を有効にする必要があり/etc/ssh/sshd_configます。yesalllocal

AllowTcpForwarding yes

sshdこのオプションを適用するには、リモートサーバーを再ロードまたは再起動する必要があります。新しいつながる。まだ使用中の接続で構文エラーをすばやく修正しないと、追加の接続がブロックされる可能性がありますのでご注意ください。

ポート転送の有効化に関連する他の多くの微妙なことがあります。たとえば、ユーザー固有の項目authorized_keysこれは特定のポートのみに制限できます(システム全体の設定が許可する限り)。

関連情報