Bagaimana ssh ProxyCommand benar-benar berfungsi?

8

Saya merasa nyaman dengan menggunakan fitur ProxyCommand dari ssh dan dapat menggunakannya untuk melompat melalui host benteng mulitple untuk mencapai host terakhir secara efisien. Tapi sepertinya saya tidak mengerti bagaimana cara kerjanya di backend.

Untuk misalnya. Saya memiliki file konfigurasi berikut.

Host final
Hostname final.com
Port 22
AgentForwarding yes
User guestuser
ProxyCommand "ssh [email protected] -W %h:%p"

Saya mengerti bahwa untuk menghubungkan ke host final, ProxyCommand akan berjalan sebelum membuat koneksi final.com. Tapi sepertinya saya masih tidak mengerti urutan koneksi.

Dan apa yang dilakukan opsi -W %h:%p? Saya mengerti bahwa ini adalah fitur netcat dan mirip dengan nc %h %p.

Jadi sejauh pemahaman saya di sini adalah urutan operasi. Mohon beri tahu saya jika saya salah. Saya akan menggunakan file konfigurasi yang ditentukan di atas dalam contoh saya.

  1. Pengguna masuk ssh final
  2. Koneksi ssh ke bastion.com dibuat.
  3. Terowongan netcat dibuat dari bastion.com ke port 22 dari final.com. Stdin dari netcat terhubung ke shell yang diperoleh dari koneksi ke bastion.com.
  4. Jadi sekarang kami memiliki koneksi dari sistem kami ke final.com. Bagian pertama dari koneksi ini adalah koneksi ssh dari sistem kami ke bastion.com. Bagian kedua dari koneksi ini adalah terowongan netcat dari bastion.com ke final.com.
  5. Sekarang ssh finalperintah mengambil koneksi di atas sebagai proxy dan tunnels datanya melalui koneksi yang ada ini.

Selain itu saya juga ingin tahu apakah teknik ini juga dikenal sebagai ssh stacking ?

menambahkan linebreaks

Naruto Uzumaki
sumber

Jawaban:

8

3) Terowongan netcat dibuat dari bastion.com ke port 22 dari final.com.

salah, tidak ada netcat.

1) Pengguna masuk ssh finaldi localhost. Ini meluncurkan proses ssh induk
2) Induk ssh membuat ssh anak dengan I / O dialihkan ke pipa
3) Ssh anak menciptakan koneksi ke bastion.com.
4) sshdProses pada bastion.com membuat koneksi tcp ke final.com:22
5) Saluran ssh ditambahkan ke koneksi ssh yang ada antara localhost dan bastion.com
6) Induk ssh menulis data handshake ke pipa, child ssh membacanya dari pipa, mengirim melalui saluran ssh ke sshd di bastion.com; sshd membacanya dan menulisnya ke soket yang terhubung ke final.com. Demikian pula, data ditransmisikan dari final.com ke localhost

baskom
sumber
Terima kasih atas jawaban anda. Apakah teknik ini juga dikenal sebagai penumpukan ssh atau tidak memiliki nama?
Naruto Uzumaki
2
Bisakah Anda mengutip referensi? Misalnya manual. spec ..
qweruiop