SFTP через подвійний перехід сервера


15

Я намагаюся розробити метод, який дозволить мені отримати доступ до файлів на сервері SFTP, ніж я не можу отримати доступ зі своєї локальної машини. В даний час мені доводиться SSH на віддалений сервер (саме в певному блоці IP приймає остаточний сервер SFTP), а потім звідти SFTP на цільовий сервер. Звідти getя переймаю цікаві мені файли, тим самим переносячи їх на сервер посередника, з якого я можу отримати файли або через папку Samba, або безпосередньо scp. Я також працюю в зворотному напрямку, де я перекидаю файли на посередника, SSH до нього, потім SFTP до місця призначення та putїх у відповідні папки.

Моя мета - скоротити це. Прикрими обмеженнями є те, що моєю машиною є Windows (я використовую KiTTy та / або Cygwin) і я не можу жодним чином змінювати сервер посередника (або сервер призначення). Я готовий використовувати командний рядок або програми GUI до тих пір, поки він працює і є вільним.

Будь-які ідеї?

Відповіді:


24

По суті, без GUI чи інших зручностей:

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

Ви можете зробити це за замовчуванням, відредагувавши конфігураційний файл, за замовчуванням ~ / .ssh / config

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

Потім це можна зробити

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

Звичайно, з такою магією можна легко

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

У Windows ви використовуєте WinSCP, який постачається з (я думаю, IIRC) PLINK (від пакету Putty). Я припускаю, що розташування за замовчуванням для configфайлу ssh відрізняється (для цього я мушу google), але я впевнений, що він працює більш-менш однаково.

Зауважте, що єдине, що вам потрібно для цього, - це "netcat ( nc)" на середньому сервері (перший перехід). Це всюдисущий інструмент на linux / UNIX [1]; Побудувати статично пов’язану версію досить просто, якщо ви зможете скопіювати її туди в першу чергу.

[1] зауважте, що є деякі аромати, тому варіант -w може знадобитися відмінити / прописати по-іншому


1
Ви, пане, поняття не маєте, наскільки це тільки мене зробило :) Ідеально!
josh.trow

@ Josh.trow: Ні, але я радий , що ви мені сказали :) в будь-який час
sehe

Хоча, як вже знайшов @ josh.trow, WinSCP має вбудовану функцію тунелювання (див. Іншу відповідь), якщо вам коли-небудь потрібно буде фактично використовувати налаштування тунелю зовнішнім додатком, ось вам посібник: wincp.net/eng/docs/ guide_tunnel
Мартін

9

Я не збираюся ставити це як прийняту відповідь, тому що я ніколи не знайшов би її без @sehe та @Jakub, але ось що я знайшов, що спрощує все ...

WinSCP має можливість використовувати вбудований тунель SSH. Я не знаю, коли ця функція надійшла, але я її якось раніше не помічав.

Параметри тунелю WinSCP


Документація функції тунелювання: wincp.net/eng/docs/tunneling і warscp.net/eng/docs/ui_login_tunnel
Мартін

також працює у filezilla!
Hayden Thring

ця функція дозволяє лише один тунель ... як додати 2-й тунель?
zeetit

@zeetit Тоді вам доведеться використовувати зовнішній тунель. Всі параметри тунелювання задокументовані в посібнику WinSCP про тунелювання .
Мартін Прикрил

2

Однією з моїх пропозицій було б створити проксі-шкарпетку, використовуючи шпаклівку (з вікна вікна), а потім проксі-сервер вашого SFTP-клієнта (наприклад, Filezilla sftp).

Вам не потрібно робити нічого особливого таким чином, просто увімкніть проксі-шпаклівку шпаклівки та увімкніть filezilla та перетягніть свої файли на сервер призначення.

(you ==socks5 proxy==> middle server) ==> destination server

Здається, ти вирішуєш іншу проблему, насправді жорстку. Проблема ОП полягає в тому, що кінцеве місце призначення не є маршрутизованим від клієнта - вихідний трафік SSH нормальний. ( Я вважаю, що ваше рішення потрібно для "тунелю" трафіку SSH через проксі-сервер? )
sehe

@sehe .. що? Ви встановлюєте SSH шкарпетки 5 проксі (ssh тунель до середнього поля), потім просто проксі ваш SFTP трафік до пункту призначення, там, маскуючись як середній сервер. Яку ще проблему я вирішую?
Якуб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.