ローカルポート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
)で有効にする必要があります。
TCP転送が許可されるかどうかを指定します。使用可能なオプションは、
yes
(デフォルト)またはall
TCP転送を許可し、no
すべてのTCP転送をブロックし、local
ローカル(ssh(1)の観点から)転送のみを許可するか、リモートremote
転送のみを許可します。ユーザーはいつでも独自のフォワーダーをインストールできるため、TCP転送を無効にしてもユーザーがシェルアクセスを拒否しない限り、セキュリティは向上しません。
上記のデフォルトはDebianシステム用であり、AWSではデフォルトではない可能性がありますsshd
。このオプションは/または少なくともポート転送を有効にする必要があり/etc/ssh/sshd_config
ます。yes
all
local
AllowTcpForwarding yes
sshd
このオプションを適用するには、リモートサーバーを再ロードまたは再起動する必要があります。新しいつながる。まだ使用中の接続で構文エラーをすばやく修正しないと、追加の接続がブロックされる可能性がありますのでご注意ください。
ポート転送の有効化に関連する他の多くの微妙なことがあります。たとえば、ユーザー固有の項目authorized_keys
これは特定のポートのみに制限できます(システム全体の設定が許可する限り)。