SFTP melalui hop server ganda

15

Saya mencoba mencari metode untuk memungkinkan saya mengakses file pada server SFTP daripada saya tidak dapat mengakses dari mesin lokal saya. Saat ini, saya harus SSH ke server jarak jauh (itu adalah dalam blok IP tertentu bahwa server SFTP akhir akan menerima dari), kemudian dari sana SFTP ke server tujuan. Dari sana, saya getfile yang saya tertarik, sehingga menjatuhkannya ke server perantara, dari mana saya bisa mendapatkan file baik melalui share Samba atau dengan direct scp. Saya juga bekerja secara terbalik, di mana saya menjatuhkan file ke tengkulak, SSH untuk itu kemudian SFTP ke tujuan dan putmereka ke folder yang sesuai.

Tujuan saya adalah untuk mempersingkat ini. Pembatasan yang disayangkan adalah bahwa mesin saya adalah Windows (saya menggunakan KiTTy dan / atau Cygwin) dan saya tidak dapat memodifikasi server perantara (atau server tujuan) dengan cara apa pun. Saya bersedia menggunakan command line atau program GUI selama ia berfungsi dan gratis.

Ada ide?

josh.trow
sumber

Jawaban:

24

Intinya, tanpa GUI atau kenyamanan lain:

ssh -o ProxyCommand='ssh myfirsthop nc -w 10 %h %p' mydestination

Anda dapat menjadikan ini sebagai default dengan mengedit file konfigurasi, secara default ~ / .ssh / config

Host mydestination, mydest2, mydest3
ProxyCommand ssh myfirsthop nc -w 10 %h %p

Ini kemudian memungkinkan Anda untuk melakukannya

ssh mydestination
scp mydest2:file.txt ./
scp file.txt mydest3:/tmp/

Tentu saja, dengan sihir semacam itu kamu bisa dengan mudah

mkdir -pv /tmp/mydest3tmp          # create mountpoint
sshfs mydest3:/tmp /tmp/dest3tmp/  # mount :)

Di windows, Anda akan menggunakan WinSCP yang dilengkapi dengan (saya pikir IIRC) PLINK (dari suite Putty). Saya kira lokasi default untuk configfile ssh berbeda (saya harus google untuk itu), tapi saya yakin itu berfungsi kurang lebih sama.

Perhatikan bahwa satu-satunya hal yang Anda perlukan agar ini berfungsi adalah 'netcat ( nc)' di server tengah (hop pertama). Ini adalah alat yang ada di mana-mana di linux / UNIX [1]; Sangat mudah untuk membangun versi yang terhubung secara statis yang seharusnya berfungsi jika Anda dapat menyalinnya di sana.

[1] perhatikan bahwa ada beberapa rasa, sehingga opsi -w mungkin perlu dijatuhkan / dieja secara berbeda

lihat
sumber
1
Anda Tuan, tidak tahu betapa bahagianya ini hanya membuat saya :) Sempurna!
josh.trow
@ josh.trow: Tidak, tapi saya senang Anda memberi tahu saya :) Kapan saja
lihat
Meskipun, seperti yang sudah ditemukan oleh @ josh.trow, WinSCP memiliki fitur tunneling (lihat jawaban lainnya), jika Anda benar-benar perlu menggunakan pengaturan terowongan oleh aplikasi eksternal, berikut adalah panduannya: winscp.net/eng/docs/ guide_tunnel
Martin Prikryl
9

Saya tidak akan menetapkan ini sebagai jawaban yang diterima karena saya tidak akan pernah menemukannya tanpa @sehe dan @Jubub, tetapi inilah yang saya temukan yang menyederhanakan segalanya ...

WinSCP memiliki kemampuan untuk menggunakan built-in SSH tunnel. Saya tidak tahu kapan fitur ini tiba, tetapi saya tidak pernah menyadarinya sebelumnya.

Pengaturan WinSCP Tunnel

josh.trow
sumber
Dokumentasi fitur tunneling: winscp.net/eng/docs/tunneling dan winscp.net/eng/docs/ui_login_tunnel
Martin Prikryl
bekerja di filezilla juga!
Hayden Thring
fitur ini hanya memungkinkan terowongan tunggal ... bagaimana cara menambahkan terowongan ke-2?
zeetit
@zeetit Maka Anda harus menggunakan terowongan eksternal. Semua opsi tunneling didokumentasikan dalam panduan WinSCP pada tunneling .
Martin Prikryl
2

Salah satu saran saya adalah membuat proxy kaus kaki menggunakan dempul (dari kotak windows Anda), dan kemudian proksi klien SFTP Anda di atasnya (katakanlah Filezilla sftp).

Anda tidak perlu melakukan sesuatu yang istimewa seperti itu, cukup nyalakan proxy dempul socks5 Anda, dan nyalakan filezilla, dan sftp file Anda ke server tujuan.

(you ==socks5 proxy==> middle server) ==> destination server
Jakub
sumber
Sepertinya Anda sedang memecahkan masalah yang berbeda, yang benar-benar lebih sulit. Masalah OP adalah bahwa tujuan akhir tidak dapat dialihkan dari klien - lalu lintas SSH keluar ok. ( Saya percaya solusi Anda diperlukan untuk 'terowongan' lalu lintas SSH melalui proxy? )
sehe
@sehe .. apa? Anda mengatur proxy kaus kaki 5 SSH (terowongan ssh ke kotak tengah) maka Anda cukup proksi lalu lintas SFTP Anda ke kotak tujuan, di sana dengan menyamar sebagai server tengah. Masalah apa lagi yang saya selesaikan?
Jakub