Если я вошел в систему через SSH, есть ли способ скопировать файл обратно в мою локальную систему без запуска другого терминала или сеанса экрана и выполнения scp или чего-то подобного или без выполнения SSH из удаленной системы обратно в локальная система?
258
scp file.foo user@myclient.com:file.foo
: PОтветы:
Мастер связи
Это проще всего, если вы планируете заранее.
Откройте мастер-соединение в первый раз. Для последующих подключений маршрутизируйте подчиненные соединения через существующее главное соединение. В ваших
~/.ssh/config
, настроить общий доступ к подключению происходит автоматически:Если вы запустите сеанс ssh с тем же пользователем (пользователь, порт, компьютер), что и с существующим соединением, второй сеанс будет туннелироваться поверх первого. Установка второго соединения не требует новой аутентификации и выполняется очень быстро.
Таким образом, пока у вас есть активное соединение, вы можете быстро:
scp
илиrsync
;экспедиция
На существующем соединении вы можете установить обратный туннель SSH. В командной строке ssh создайте удаленную переадресацию, передав,
-R 22042:localhost:22
где 22042 - это случайно выбранный номер, который отличается от любого другого номера порта на удаленном компьютере. Затемssh -p 22042 localhost
на удаленной машине соединяет вас обратно с исходной машиной; Вы можете использоватьscp -P 22042 foo localhost:
для копирования файлов.Вы можете автоматизировать это дальше с
RemoteForward 22042 localhost:22
. Проблема в том, что если вы подключаетесь к одному и тому же компьютеру с несколькими экземплярами ssh или если кто-то другой использует порт, вы не получите переадресацию.Если вы не включили удаленную пересылку с самого начала, вы можете сделать это в существующем сеансе ssh. Тип Enter
~C
Enter-R 22042:localhost:22
Enter. См. «Escape-символы» в руководстве для получения дополнительной информации.Есть также некоторая интересная информация в этой теме неисправности сервера .
Копировать вставить
Если файл небольшой, вы можете напечатать его и скопировать и вставить из вывода терминала. Если файл содержит непечатаемые символы, используйте кодировку, например base64 .
Удобнее, если у вас активна переадресация X, скопируйте файл на удаленный компьютер и вставьте его локально. Вы можете передавать данные в и из
xclip
илиxsel
. Если вы хотите сохранить имя файла и метаданные, скопируйте и вставьте архив.источник
Другим (ИМО) простым способом будет:
Или, если вы предпочитаете что-то похожее на GUI, попробуйте Midnight Commander . Они называют функцию Shell-Link . Большинство дистрибутивов имеют их в своих системах пакетов как
mc
.источник
mc
самый быстрый в использовании.tgz
файлами все время :)SSH поддерживает несколько команд через escape-символ (
~
по умолчанию):!args
, Кажется, ближе всего к тому , что вы хотите. Обратите внимание, что вам нужноPermitLocalCommand
включить в вашем/etc/ssh_config
файле, чтобы~C
команды работали (см.man ssh_config
).Вы можете повторно использовать тот же сеанс SSH , если вы создали
ControlMaster
в системеssh_config
. Если вы делаете это:технически вы никогда не покидали сессию ssh и не должны проходить повторную аутентификацию. Возможно, сложнее, чем вы хотели бы, но я не могу придумать другой простой способ.
источник
!args
в сообщении помощи.args
не в первом справочном сообщении (~?
), а во втором (когда вы вводитеssh>
подсказку с помощью~C
, вы можете набиратьhelp
вssh>
подсказке)Это все очень сложные методы.
Вы можете смонтировать удаленную файловую систему на локальном компьютере с помощью
sshfs
:Затем вы можете скопировать и вставить файл с помощью nautilus, gnome, konqueror, dolphin, bash или чего-либо еще.
источник
sshfs -oIdentityFile=~/.ssh/keyfile.pem user@192.168.1.2:/ /mnt/sshfs/
-R
для удаленного в локальный) или прямой (-L
для локального в удаленный) порты для запуска передачи файлов, если у вас есть какой-нибудь демон передачи файлов, слушающий на другом конце.Но ничего из этого действительно не нужно, ИМО. Протокол SSH поддерживает несколько каналов в одном соединении, а клиент OpenSSH поддерживает мультиплексирование. Предполагая, что у вас есть
ControlMaster
иControlPath
настроить (ControlPersist
это тоже полезно),источник
Еще более простой подход: откройте Filezilla (или ваш любимый ftp-браузер), откройте ssh-соединение с тем же сайтом, найдите файл и перетащите его в локальную файловую структуру. Если вы новичок в Filezilla, воспользуйтесь функцией «менеджер сайтов», чтобы быстро подключиться в следующий раз.
Да, я знаю, что это очевидно для большинства из вас (и не совсем точно), но некоторые (как я), которые нашли этот поток, ищущий решение только для терминала, возможно, упустили очевидное.
источник
ssh://SERVER
.То, что я считаю лучшим и наиболее эффективным решением - это использовать
xclip-copyfile
иxclip-pastefile
.На сервере вы используете
xclip-copyfile
для копирования один или несколько файлов. Эти файлы затем доступны на вашем локальном сервере. Там вы можете использоватьxclip-pastefile
.Это обходит необходимость использовать
scp
или иметь локальный ssh-сервер. Я использую это с Cygwin, например. Единственная проблема заключается в том, что это требует установки,xclip
если у вас его еще нет. О, и это работает с двоичными файлами тоже.источник
Одна из многих причин, по которым мы используем SecureCRT - несмотря на то, что предпочитаем программное обеспечение с открытым исходным кодом, где это практически возможно, - это простота передачи файлов. В мире F / OSS просто нет прямой замены.
SecureCRT начиналась как чистая программа для Windows в середине 1990-х, но была перенесена на Mac OS X и Linux пару лет назад .
SecureCRT имеет три основных функции для передачи файлов в систему и из системы, в которую вы используете SSH:
ZModem , YModem , XModem , Kermit и ASCII - SecureCRT - это эмулятор терминала старого типа, поддерживающий несколько внутриполосных протоколов передачи файлов.
Самым простым в использовании является ZModem. Когда вы набираете что-то вроде
sz file-to-download
удаленной командной строки, удаленнаяsz
программа записывает escape-последовательность, которая сообщает SecureCRT немедленно начать загрузкуfile-to-download
в каталог загрузки по умолчанию.Приятно отметить, что каталог загрузки настраивается для каждой сессии. Мы используем это, чтобы иметь каталоги для сайтов на нашем файловом сервере в главном офисе, поэтому нам не нужно вручную сортировать загруженные файлы.
(
sz
это программа «send ZModem», входящая в составlrzsz
пакета. Она уже упакована для большинства систем Unixy. Если по какой-то причине в вашей удаленной системе она еще не установлена, и вы не можете легко установить двоичный пакет, Исходный пакет небольшой и легко переносимый. Мне не раз приходилось посылатьlrzsz
«архив» илиuuencode
«tarball» в урезанную удаленную систему, чтобы я мог в нее загружать файлы ZModem.)SFTP - SecureCRT имеет тесно интегрированную базовую реализацию SFTP.
Под «плотной интеграцией» я подразумеваю, что когда вы даете команду меню SFTP или сочетание клавиш, она открывает новую вкладку, подключенную к удаленному сайту через то же соединение SSH. Таким образом, вам не нужно снова входить в систему, и соединение устанавливается немного быстрее, чем если бы вы открыли отдельное SFTP-соединение с тем же сервером.
Я характеризую функцию SFTP как «базовую», потому что у VanDyke Software есть отдельный продукт для передачи файлов, SecureFX . Это более функционально, чем встроенный SFTP-клиент, а также интегрируется с SecureCRT.
Функция SFTP SecureCRT позволяет вам настроить удаленные и локальные каталоги по умолчанию, которые отделены от конфигурации ZModem.
Эта функция SFTP имеет базовый интерфейс командной строки, имитирующий
sftp
программу OpenSSH , за исключением того, что она имеет такие возможности, как Tabзавершение команды. Таким образом, поиск удаленного файла называетсяsomefile.tar.gz
так же просто, какget so
TabEnter.Перетаскивание - если вы перетаскиваете файл в окно терминала, он автоматически печатает
rz
для вас и начинает отправку файла.Кроме того, вы можете открыть вкладку SFTP и перетащить файл на эту вкладку, чтобы отправить его через SFTP. Таким образом, отправка файла на удаленную систему может быть столь же просто , как Alt-P, перетащить , каплю .
Мы находим, что передача происходит намного быстрее через SFTP, возможно, потому что это протокол на основе TCP, поэтому он выигрывает от больших скользящих окон современных стеков TCP / IP . ZModem был разработан в те дни, когда размер блока в 64 КБ считался «большим». Таким образом, большая часть потенциальной скорости в канале поглощается в ZModem, в то время как каждый конец ожидает подтверждения передачи блока.
Приятной особенностью режима перетаскивания является то, что он снимает одно из стрессов при использовании ZModem. Когда вы
rz
печатаете на удаленной системе, SecureCRT автоматически открывает окно выбора файлов. Затем у вас есть около минуты, чтобы найти и выбрать файл до истечения времени ожидания удаленной стороны. Это создает атмосферу гонки на часах, которая не нравится. Перетаскивание позволяет найти файл на досуге, а затем начать передачу одним быстрым движением мыши.Мы все еще используем ручной метод, начиная передачу с явной
rz
команды. Это связано с тем, что SecureCRT позволяет настраивать каталог загрузки для каждой сессии, который мы указываем на папку на файловом сервере, которая всегда содержит последнюю версию программного обеспечения, которое работает на конкретном удаленном сайте. Для таких передач нет гонки на время, так как сборщик файлов открывается в правильном месте для начала.источник
Используйте "!" преобразовать файл в ASCII-представление вашего файла (например
! uuencode myfile.bin >uuencode.dat
). Тогда используйте! cat uuencode.dat >target.dat
. После этого используйте uudecode на целевой стороне:! uudecode target.dat >myfile.bin
источник