SSH легко копирует файл в локальную систему

Если я войду в систему через SSH, есть способ скопировать файл обратно в мою локальную систему, не запуская другой сеанс терминала или сеанса сеанса, а также делать scp или что-то подобное или не делать SSH из удаленной системы обратно локальная система?

  • Могу ли я ssh на сервер через туннель pptp?
  • сеанс ssh не закрывается в сценарии bash
  • Имеете ли сервер на DigitalOcean только доступным SSH, что произойдет, если мой компьютер сломается?
  • Увеличьте SSH ConnectTimeout более 60 секунд
  • Как заставить ssh-agent работать во всех терминалах?
  • Автозаполнение TAB в Bourne Shell
  • раздражающее сообщение «Соединение X11 отклонено из-за неправильной аутентификации», в то время как нет никакой проблемы вообще
  • Как добавить файл через ssh?
  • 9 Solutions collect form web for “SSH легко копирует файл в локальную систему”

    Основное соединение

    Это проще всего, если вы планируете заранее.

    Откройте мастер-соединение в первый раз. Для последующих соединений подключайте ведомые соединения через существующее главное соединение. В вашем ~/.ssh/config настройте совместное использование соединения автоматически:

     ControlMaster auto ControlPath ~/.ssh/control:%h:%p:%r 

    Если вы начинаете сеанс ssh с тем же (пользователь, порт, машина) в качестве существующего соединения, второй сеанс будет туннелирован по первому. Установление второго соединения не требует новой аутентификации и очень быстро.

    Поэтому, когда у вас есть активное соединение, вы можете быстро:

    • скопировать файл с помощью scp или rsync ;
    • смонтировать удаленную файловую систему с помощью sshfs .

    экспедиция

    В существующем соединении вы можете установить обратный туннель ssh. В командной строке ssh создайте удаленную пересылку, передав -R 22042:localhost:22 где 22042 – это случайное число, которое отличается от любого другого номера порта на удаленной машине. Затем ssh -p 22042 localhost на удаленном компьютере соединяет вас с исходной машиной; вы можете использовать scp -P 22042 foo localhost: для копирования файлов.

    Вы можете автоматизировать это дальше с RemoteForward 22042 localhost:22 . Проблема заключается в том, что если вы подключаетесь к тому же компьютеру с несколькими экземплярами ssh или если кто-то использует порт, вы не получаете переадресацию.

    Если вы не включили удаленную переадресацию с самого начала, вы можете сделать это в существующем сеансе ssh. Введите Enter ~C Введите -R 22042:localhost:22 Enter . Дополнительную информацию см. В разделе «Escape characters» в руководстве.

    В этом потоке сбоев сервера есть интересная информация.

    Копировать вставить

    Если файл мал, вы можете ввести его и скопировать-вставить с вывода терминала. Если файл содержит непечатаемые символы, используйте кодировку, такую ​​как base64 .

     remote.example.net $ base64 <myfile
     (скопируйте вывод)
    
     local.example.net $ base64 -d> myfile
     (скопируйте вывод)
     Ctrl + D
    

    Более удобно, если у вас активна переадресация X, скопируйте файл на удаленном компьютере и вставьте его локально. Вы можете передавать данные в и из xclip или xsel . Если вы хотите сохранить имя файла и метаданные, скопируйте архив в архив.

     remote.example.net$ tar -czf - myfile | xsel 

     local.example.net$ xsel | tar -xzf - 

    SSH поддерживает несколько команд через escape-символ ( ~ по умолчанию):

     $ ~? Supported escape sequences: ~. - terminate connection (and any multiplexed sessions) ~B - send a BREAK to the remote system ~C - open a command line ~R - Request rekey (SSH protocol 2 only) ~^Z - suspend ssh ~# - list forwarded connections ~& - background ssh (when waiting for connections to terminate) ~? - this message ~~ - send the escape character by typing it twice (Note that escapes are only recognized immediately after newline.) $ ~C ssh> help Commands: -L[bind_address:]port:host:hostport Request local forward -R[bind_address:]port:host:hostport Request remote forward -D[bind_address:]port Request dynamic forward -KR[bind_address:]port Cancel remote forward !args Execute local command 

    Кажется, что !args Наиболее близки к тому, что вы хотите. Обратите внимание, что вам нужно включить PermitLocalCommand в /etc/ssh_config чтобы команды ~C работали (см. man ssh_config ).

    Вы можете повторно использовать один и тот же сеанс ssh, если вы настроите ControlMaster в ssh_config . Если вы это сделаете:

     $ ~C ssh> !scp file user@myserver: 

    вы технически никогда не покидали сеанс ssh и не нуждаетесь в повторной аутентификации. Наверное, сложнее, чем хотелось бы, но я не могу придумать еще один простой способ.

    Другой (ИМО) простой способ:

     # to remote host cat localfile.conf | ssh user@hostname 'cat -> /tmp/remotefile.conf' # from remote host ssh user@hostname 'cat /tmp/remotefile.conf' > /tmp/localfile.conf 

    Или, если вы предпочитаете что-то GUI-like, попробуйте Midnight Commander . Они называют функцию Shell-Link . Большинство дистрибутивов имеют в своих пакетах системы как mc .

    Все это очень сложные методы.
    Вы можете подключить удаленную файловую систему на локальном компьютере с помощью sshfs :

     mkdir -p /mnt/sshfs root@IS1300:~# sshfs 192.168.1.2:/ /mnt/sshfs root@IS1300:~# umount /mnt/sshfs 

    Затем вы можете скопировать файл с помощью nautilus, gnome, konqueror, dolphin, bash или что-то еще.

    • Используйте ssh-xfer , модифицированный ssh-agent, который эффективно перегружает существующий боковой канал ssh для использования файлов.
    • Используйте zssh , который эффективно zmodem по ssh. Если вы когда-либо использовали rzsz, это будет казаться очень знакомым.
    • Реверс ( -R , для удаленных локальных) или переадресация ( -L , для локально-удаленных) портов для запуска переноса файлов, предполагая, что на другом конце вы прослушиваете какой-то демон передачи файлов.

    Но никто из них не нужен, ИМО. Протокол SSH поддерживает несколько каналов в одном соединении, а клиент OpenSSH поддерживает мультиплексирование. Предполагая, что у вас установлены ControlMaster и ControlPath (также полезен ControlPersist )

       # первое соединение
     $ ssh remote
    
       # будет мультиплексироваться по тому же соединению, который был открыт исходный ssh
     $ sftp remote
    

    Еще более простой подход: откройте Filezilla (или ваш любимый ftp-браузер), откройте ssh-соединение с одним и тем же сайтом, найдите файл и перетащите его в свою локальную файловую структуру. Если вы новичок в Filezilla, используйте функцию «менеджер сайта», чтобы снова подключиться в следующий раз.

    Да, я знаю, что это очевидно для большинства из вас (и не точно на месте), но некоторые (как я), которые нашли этот поток, ищущий решение только для терминала, возможно, не обратили внимания на очевидное.

    То, что я нашел лучшим и наиболее эффективным решением, – использовать xclip-copyfile и xclip-pastefile .

    На сервере вы используете xclip-copyfile для копирования одного или нескольких файлов. Эти файлы затем доступны на вашем локальном сервере. Там вы можете использовать xclip-pastefile .

    Это обходит необходимость использования scp или локального ssh-сервера. Например, я использую это с cygwin. Единственная проблема заключается в том, что для этого требуется установка xclip если у вас ее еще нет. О, и это работает и с двоичными файлами.

    Одна из многих причин, по которым мы используем SecureCRT – несмотря на то, что предпочитаем программное обеспечение с открытым исходным кодом, где это практически целесообразно, – это легкость передачи файлов. В мире F / OSS просто нет прямой замены.

    SecureCRT начался как чистая программа Windows в середине 1990-х годов, но был перенесен на Mac OS X и Linux пару лет назад .

    SecureCRT имеет три основные функции для передачи файлов в и из системы, в которую вы подключены:

    • ZModem , YModem , XModem , Kermit и ASCII – SecureCRT – эмулятор терминалов старой школы, поддерживающий несколько протоколов передачи файлов внутри полосы.

      Самый простой в использовании – ZModem. Когда вы вводите что-то вроде sz file-to-download в удаленной командной строке, удаленная программа sz выписывает escape-последовательность, которая сообщает SecureCRT немедленно начать загрузку file-to-download в каталог file-to-download по умолчанию.

      Хорошим прикосновением является то, что каталог загрузки настраивается для каждого сеанса. Мы используем это, чтобы иметь каталоги на каждом сайте на нашем главном офисном файловом сервере, поэтому нам не нужно вручную сортировать загруженные файлы.

      ( sz – это программа «send ZModem», входящая в пакет lrzsz , которая уже упакована для большинства систем Unixy. Если по какой-то причине ваша удаленная система уже не установлена, и вы не можете легко установить бинарный пакет , исходный пакет небольшой и переносимый. Мне приходилось посылать lrzsz «sharchive» или uuencode 'd 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 Tab Enter .

    • Перетаскивание – если вы перетаскиваете файл в окно терминала, он автоматически набирает rz для вас и начинает отправку файла.

      Кроме того, вы можете открыть вкладку SFTP и отбросить файл на эту вкладку, чтобы отправить его через SFTP. Таким образом, отправка файла в удаленную систему может быть такой же простой, как Alt-P , drag , drop .

      Мы обнаруживаем, что передача происходит намного быстрее через SFTP, вероятно, потому, что это протокол на основе TCP, поэтому он выигрывает от больших скользящих окон современных стеков TCP / IP . ZModem был разработан в те дни, когда размер блока размером 64 килобайта считался «большим». Таким образом, большая часть потенциальной скорости в канале впитывается в ZModem, в то время как каждый конец ожидает подтверждения передачи блока.

      Одна приятная вещь о режиме перетаскивания – это то, что из-за использования ZModem требуется одно из стрессов. Когда вы вводите rz в удаленной системе, SecureCRT автоматически выбирает файл. У вас есть около минуты, чтобы найти и выбрать файл до того, как удаленная сторона отключится. Это создает гонку против часов, которая не нравится. Перетаскивание позволяет найти файл на досуге, а затем начать передачу одним быстрым движением мыши.

      Мы все еще используем ручной метод, начиная передачу с помощью явной команды rz . Это связано с тем, что SecureCRT позволяет настроить каталоги загрузки для каждого сеанса, которые мы указываем на папку на файловом сервере, которая всегда содержит самую последнюю версию программного обеспечения, на котором работает конкретный удаленный сайт. Для таких передач нет гонки против часов, так как сборщик файлов открывается в правильном месте для начала.

    Используйте "!" для преобразования файла в ASCII-представление вашего файла (например, ! uuencode myfile.bin >uuencode.dat ). Тогда используйте ! cat uuencode.dat >target.dat ! cat uuencode.dat >target.dat . После этого используйте uudecode на целевой стороне ! uudecode target.dat >myfile.bin ! uudecode target.dat >myfile.bin

    Interesting Posts

    Добавить виртуальный мост без потери сети?

    SSH медленный после настройки TCP Wrappers

    есть ли эквивалент «snoop -a» на linux?

    сохраняющиеся многофакторные пользовательские данные для пользовательской проверки подлинности pam в CentOS 7

    UNIX переместить имя файла с помощью sysdate

    Команда `ls -ltu` не может отображать папки / файлы на основе последнего времени доступа

    почему useradd havent создал стандартные файлы?

    Создание нового initrd без установки ядра

    Команда для удаления части данных JSON из каждой строки?

    Можно ли вручную выполнить единый системный таймер-парный сервисный модуль для целей тестирования?

    Исправить это правило айпармора?

    Скрытие в двойных кавычках в сценариях bash

    Могу ли я предотвратить «статус обслуживания foo» от подкачки его вывода через «меньше»?

    Как прокомментировать файл windows.tmux

    Извлеките подстроку из значения переменной

    Linux и Unix - лучшая ОС в мире.