30

Я регулярно обнаруживаю, что хочу скопировать файл из сеанса удаленного терминала на мою локальную машину. Обычно я выхожу из удаленного сеанса и вызываю передачу scp из локальной системы, чтобы скопировать файл из удаленной в локальную систему. Но это кажется немного затянуто. Я хотел бы передать файл во время входа в систему через SSH, чтобы сэкономить время. Моя локальная машина подключена к Интернету с динамического диапазона IP-адресов, поэтому я не совсем уверен, как подключиться к нему удаленно. Но, конечно же, поскольку удаленный сеанс исходит от моего ноутбука, в scp должен быть ярлык, чтобы вернуться к моему ноутбуку ... Правильно?

6 ответов6

19

Вы можете использовать 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, также поддерживают туннелирование

5

Попробуйте выполнить следующие действия в командной строке с удаленного компьютера. Возможно, вам потребуется включить переадресацию портов на маршрутизаторе.

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

Источник: легко скопируйте файл обратно на хост, с которого вы подключаетесь (commandlinefu.com)

1

Может зсс?

zssh (Zmodem SSH) - это программа для интерактивной передачи файлов на удаленный компьютер с использованием защищенной оболочки (ssh). Он предназначен для удобной альтернативы scp, позволяя передавать файлы без необходимости открывать другой сеанс и повторно проходить аутентификацию.

ZSSH это интерактивная оболочка для SSH

Он использует почтенные rz, sz реализации передачи файлов zmodem.

1

Подняв этот вопрос, я бы тоже хотел, чтобы это было легко достигнуто.

Вот соответствующий ответ: Как мне SCP с удаленного компьютера на локальный компьютер, когда я нахожусь вне моей домашней сети?

Вам необходимо разрешить доступ к SSH за пределами вашей сети. Это делается путем переадресации порта на вашем широкополосном маршрутизаторе к локальной сети вашего сервера. Тем не менее, существуют некоторые проблемы безопасности, связанные с разрешением доступа по ssh извне, поэтому вам также может понадобиться изучить методы для обеспечения безопасности ssh, аутентификации на основе ключей и полного отключения аутентификации по паролю.

0

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

0

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

Например, предположим, что я подключен к myuser @ remote и хочу скопировать файл lol.txt на мой локальный компьютер. Сначала я хочу приостановить SSH на моей локальной машине. Обычно вы используете Ctrl- Z для приостановки, но это не сработает в ssh, потому что оно будет отправлено в удаленную оболочку. Вместо этого вы должны использовать управляющую последовательность ssh Enter ~. Чтобы приостановить ssh, нажмите Enter ~ Ctrl - Z. Теперь вы можете запускать команды на вашем локальном компьютере, и можете делать

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

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

user@localmachine:~$ fg

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .