Чи можливо SCP від ​​віддаленого до локального, ввійшовши у віддалений та не знаючи IP-адреси місцевого населення?


31

Я регулярно виявляю, що хочу скопіювати файл із сеансу віддаленого терміналу на свою локальну машину. Зазвичай я виходжу з віддаленого сеансу і закликаю передачу scp з локального, щоб скопіювати файл з віддаленого на локальний. Але це відчувається трохи закрученим. Я хотів би перенести файл під час реєстрації у віддаленому режимі через SSH, щоб заощадити час. Моя локальна машина підключена до Інтернету з динамічного діапазону IP, тому я ніколи не впевнений, як підключитися до неї віддалено. Але звичайно, оскільки віддалений сеанс походить від мого ноутбука, у scp повинен бути ярлик, щоб повернутися до мого ноутбука ... Так?

Відповіді:


20

Для цього можна використовувати тунелі SSH .

За допомогою тунелювання ви можете переслати TCP-порт або з локальної машини на віддалену машину, або з віддаленої машини на вашу локальну машину. Я часто використовую її для пересилання напр. Портів SMTP або IMAP з віддаленої машини за брандмауером на мою локальну машину (а потім отримую доступ до служб локально, як ніби вони працюють локально).

Щоб переслати порт 22 (SSH) з локальної машини на віддалений апарат, спробуйте це:

ssh -R12345:localhost:22 yourremoteuser@remotemachine

(Зауважте, що localhost посилається на локальну назву віддаленої машини)

Після цього ви маєте змогу повернутися додому за допомогою:

ssh -p12345 yourlocaluser@127.0.0.1

Використовуючи scp, ви зробите щось на зразок (scp має великі регістри P для переадресації портів):

scp -P12345 filename 127.0.0.1:/tmp/filename

Переадресація портів в іншому напрямку (від віддаленого до локального) використовує -L замість -R.

Вищевказані команди передбачають, що ви використовуєте клієнт-термінал ssh. Графічні клієнти, такі як PuTTY для Windows, також підтримують тунелювання


Не відповідає на питання ОП, чия IP не є статичною.

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

Це вимагатиме від ОП встановити SSH-сервер на своїй локальній машині та подбати про аутентифікацію. Тож це може бути більше проблем, ніж варто в деяких випадках використання.
Септаграм

Це не тільки для динамічних IP-адрес, але також працює між брандмауерами, які забороняють з'єднання ssh від віддаленого до локального. Дуже корисна відповідь!

3
Ви можете зробити це ще зручніше, встановивши віддалене переадресацію порту разом із ~Cвтечею. Просто наберіть <Enter>~C-R 12345:localhost:22<Enter>, і у вас є ваш тунель, не виходячи з уже встановленого сеансу SSH.

6

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

scp <file on remote machine> ${SSH_CLIENT%% *}:<directory on local machine>

Джерело: Легко відскакуйте файл назад на хост, з якого ви підключаєтесь (commandlinefu.com)


1
Щоб пояснити, що це робить для людей, натрапили на це, ${SSH_CLIENT%% *}виведіть IP локальної машини. Отже вся команда відкриває сеанс scp з віддаленої машини на локальну машину для передачі файлів. Це можна зробити лише в тому випадку, якщо ви можете віддалити SSH на локальну машину з віддаленої машини.
bizi

2
Це можна вдосконалити, додавши щось подібне export ME="${SSH_CLIENT%% *}"до файлу rc оболонки. Потім можна просто скористатисяscp <file> $ME:<local path>
kralyk

Чудово, це працює, однак зауважте: Якщо ви ввійдете через VPN, файли будуть не на вашій машині, а десь в іншому місці.
кап

1

Може, зсш ?

zssh (Zmodem SSH) - програма для інтерактивного перенесення файлів на віддалену машину під час використання захищеної оболонки (ssh). Він призначений для зручної альтернативи scp, що дозволяє передавати файли без необхідності відкривати інший сеанс і повторно аутентифікувати себе.

zssh - інтерактивна обгортка для ssh

Він використовує поважні rz, sz реалізації передачі файлів zmodem.


1

Висловивши це питання, я хотів би легко досягти цього .

Ось відповідна відповідь: Як мені SCP з віддаленої машини на локальну машину, коли я перебуваю за межами своєї домашньої мережі?

Потрібно дозволити доступ до ssh за межами вашої мережі. Це робиться шляхом переадресації порту на вашому широкосмуговому маршрутизаторі до lan ip вашого сервера. Однак існують деякі проблеми безпеки щодо дозволу доступу до ssh ззовні, тому ви, можливо, також захочете вивчити методи для захисту ssh, частково за допомогою аутентифікації на основі ключа та повністю відключити автентифікацію пароля.


0

Одним з рішень було б призупинити сеанс ssh на локальній машині, виконати копію на локальній машині, а потім відновити сеанс ssh там, де ви зупинилися.

Наприклад, припустимо, що я підключений до myuser @ remote , і я хочу скопіювати файл lol.txt на свій локальний комп'ютер. Спершу я хочу призупинити ssh на своїй локальній машині. Зазвичай ви використовуєте Ctrl- Zдля призупинення, але це не працюватиме в ssh, оскільки воно буде відправлено у віддалений оболонку. Замість цього ви повинні використовувати послідовність відходу ssh Enter~. Так що призупинити ssh press Enter~ Ctrl- Z. Тепер ви можете запускати команди на своїй локальній машині, і це можна робити

user@localmachine:~$ scp user@remote:/path-to-file/lol.txt /dest-path/lol.txt

скопіюйте файл, а потім поверніться до ssh саме там, де ви його залишили

user@localmachine:~$ fg


але проблема не в копіюванні з віддаленого, проблема в копіюванні на віддалене, я не бачу, як призупиняюча оболонка робить щось для вирішення цього питання ...
alex

Добре це працює і в інший спосіб. Ідея полягає лише в тому, щоб ви призупинили сеанс замість того, щоб виходити з нього, що робить його хоч трохи простішим.
Steen Schütt

0

Якщо ви хочете більш простого рішення, просто відкрийте рахунок акаунта, перейдіть на віддалену машину і зробіть wget (модифікована версія тут ): wget --no-check-certificate https://www.dropbox.com/s/2123jshf/ABC.pdf?dl=1 -O abc.pdf

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.