Загрузите файл через активную сессию SSH

Если вам нужен только быстрый доступ к определенному каталогу в Nautilus и диалоговым окнам файла, вы также можете использовать закладку ...

В любом случае существует файловая система FUSE с именем bindfs ( `sudo apt-get install bindfs), который, вероятно, делает именно то, что вы хотите. Например, следующее:

bindfs -n /media/USB-HDD-01/ISO/ /home/johnc/ISO-images

приведет к тому, что ISO-images появится как смонтированная файловая система на боковой панели Places в Nautilus. [F5] требуется, поскольку в противном случае bindfs пытается использовать параметр allow_other FUSE, который по умолчанию не разрешен для обычных пользователей (если вы используете bindfs в /etc/fstab, это не проблема).

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

Чтобы отключить, используйте: [!d5 ]

fusermount -u /home/johnc/ISO-images

PS: Nautilus (файловый менеджер) покажет монтируемые / смонтированные места , а не диски, но я предполагаю, что это то, что вы искали. [ ! d7]

83
задан 15 November 2010 в 18:59

111 ответов

Возможно, вы захотите проверить zssh, который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Он вам нужен на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с помощью zssh вы просто нажимаете «ctrl- @», и в нем появляется «Режим передачи файлов», который позволяет отправлять файлы обратно на трубку на клиентскую машину или загружать их с клиента на сервер. [ ! d3]

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете ssh-ключи и агент ssh, вы можете легко сделать :

[enter]~[ctrl]-Z

Какой будет фон ssh, а затем просто scp $!:/whatever/whatever .'

Как только файл будет перенесен, fg, чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 26 May 2018 в 00:24

Возможно, вы захотите проверить zssh, который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Он вам нужен на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с помощью zssh вы просто нажимаете «ctrl- @», и в нем появляется «Режим передачи файлов», который позволяет отправлять файлы обратно на трубку на клиентскую машину или загружать их с клиента на сервер. [ ! d3]

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете ssh-ключи и агент ssh, вы можете легко сделать :

[enter]~[ctrl]-Z

Какой будет фон ssh, а затем просто scp $!:/whatever/whatever .'

Как только файл будет перенесен, fg, чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 25 July 2018 в 22:53

Возможно, вы захотите проверить zssh, который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Он вам нужен на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с помощью zssh вы просто нажимаете «ctrl- @», и в нем появляется «Режим передачи файлов», который позволяет отправлять файлы обратно на трубку на клиентскую машину или загружать их с клиента на сервер. [ ! d3]

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете ssh-ключи и агент ssh, вы можете легко сделать :

[enter]~[ctrl]-Z

Какой будет фон ssh, а затем просто scp $!:/whatever/whatever .'

Как только файл будет перенесен, fg, чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 27 July 2018 в 01:09

Возможно, вы захотите проверить zssh, который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Он вам нужен на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с помощью zssh вы просто нажимаете «ctrl- @», и в нем появляется «Режим передачи файлов», который позволяет отправлять файлы обратно на трубку на клиентскую машину или загружать их с клиента на сервер. [ ! d3]

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете ssh-ключи и агент ssh, вы можете легко сделать :

[enter]~[ctrl]-Z

Какой будет фон ssh, а затем просто scp $!:/whatever/whatever .'

Как только файл будет перенесен, fg, чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 31 July 2018 в 10:27

Возможно, вы захотите проверить zssh, который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Он вам нужен на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с помощью zssh вы просто нажимаете «ctrl- @», и в нем появляется «Режим передачи файлов», который позволяет отправлять файлы обратно на трубку на клиентскую машину или загружать их с клиента на сервер. [ ! d3]

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете ssh-ключи и агент ssh, вы можете легко сделать :

[enter]~[ctrl]-Z

Какой будет фон ssh, а затем просто scp $!:/whatever/whatever .'

Как только файл будет перенесен, fg, чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 31 July 2018 в 11:29

Возможно, вы захотите проверить zssh, который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Он вам нужен на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с помощью zssh вы просто нажимаете «ctrl- @», и в нем появляется «Режим передачи файлов», который позволяет отправлять файлы обратно на трубку на клиентскую машину или загружать их с клиента на сервер. [ ! d3]

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете ssh-ключи и агент ssh, вы можете легко сделать :

[enter]~[ctrl]-Z

Какой будет фон ssh, а затем просто scp $!:/whatever/whatever .'

Как только файл будет перенесен, fg, чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 2 August 2018 в 04:16

Вы можете проверить zssh , который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Вам это нужно на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с zssh вы просто нажимаете «ctrl- @», и он вызывает «Режим передачи файлов», который позволяет вам отправлять файлы обратно (! d7)

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете вы используете ssh-ключи и ssh-агент, вы можете легко сделать:

  [enter] ~ [ctrl] -Z  

Что будет background ssh, а затем просто scp $!: / whatever / whatever. '

Как только файл будет передан, fg , чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 4 August 2018 в 20:22

Вы можете проверить zssh , который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Вам это нужно на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с zssh вы просто нажимаете «ctrl- @», и он вызывает «Режим передачи файлов», который позволяет вам отправлять файлы обратно (! d7)

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете вы используете ssh-ключи и ssh-агент, вы можете легко сделать:

  [enter] ~ [ctrl] -Z  

Что будет background ssh, а затем просто scp $!: / whatever / whatever. '

Как только файл будет передан, fg , чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 6 August 2018 в 04:21

Вы можете проверить zssh , который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Вам это нужно на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с zssh вы просто нажимаете «ctrl- @», и он вызывает «Режим передачи файлов», который позволяет вам отправлять файлы обратно (! d7)

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете вы используете ssh-ключи и ssh-агент, вы можете легко сделать:

  [enter] ~ [ctrl] -Z  

Что будет background ssh, а затем просто scp $!: / whatever / whatever. '

Как только файл будет передан, fg , чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 7 August 2018 в 22:27

Вы можете проверить zssh , который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Вам это нужно на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с zssh вы просто нажимаете «ctrl- @», и он вызывает «Режим передачи файлов», который позволяет вам отправлять файлы обратно (! d7)

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете вы используете ssh-ключи и ssh-агент, вы можете легко сделать:

  [enter] ~ [ctrl] -Z  

Что будет background ssh, а затем просто scp $!: / whatever / whatever. '

Как только файл будет передан, fg , чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 10 August 2018 в 10:35

Вы можете проверить zssh , который доступен в юниверсе и, следовательно, доступен с

sudo apt-get install zssh

Вам это нужно на вашем сервере ubuntu и на вашем клиенте, но в основном при входе в систему с zssh вы просто нажимаете «ctrl- @», и он вызывает «Режим передачи файлов», который позволяет вам отправлять файлы обратно (! d7)

Однако вам не нужно повторно открывать или открывать новое окно для scp.

Если вы используете вы используете ssh-ключи и ssh-агент, вы можете легко сделать:

  [enter] ~ [ctrl] -Z  

Что будет background ssh, а затем просто scp $!: / whatever / whatever. '

Как только файл будет передан, fg , чтобы вернуть ssh.

Если вы не используете ssh-ключи, вы все равно можете использовать опции «ControlMaster» и «ControlPath», добавленные к последним версиям OpenSSh, но это становится сложным, проверьте man ssh_config

32
ответ дан 13 August 2018 в 17:07

Предполагая, что вы используете ssh-сервер на своем рабочем столе (есть способы обойти это, но я думаю, что все они добавляют сложность и, возможно, проблемы с безопасностью), вы можете настроить обратный туннель ssh. См. SSH, который легко копирует файл в локальную систему.

Введите Enter ~C Введите -R 22042:localhost:22 Enter, чтобы создать обратную переадресацию порта с вашего сервера на ваш рабочий стол (22042 может быть любым номером порта от 1024 до 65534, который не используется ). Затем scp -P 22042 foo localhost: скопирует файл foo в ваш текущий каталог на сервере в ваш дом на рабочем столе. Теперь переместите файл в ваш текущий каталог на рабочем столе, набрав Enter ~ Ctrl + Z mv ~/foo . Enter fg Enter.

SSH легко копирует файл в локальную систему. начинается с ~; тильда распознается только после новой строки. ~ Ctrl+Z помещает ssh в фоновый режим. ~C входит в командную строку, где вы можете создать или удалить переадресацию.

24
ответ дан 26 May 2018 в 00:24
  • 1
    Использование 2-х уровней шифрования & amp; сжатие немного перебор, поэтому я предложил использовать rsh или ftp для «обратной ссылки». – JanC 16 November 2010 в 04:30
  • 2
    @JanC: для этого требуется больше настроек: вам нужно установить сервер rsh или ftp и убедиться, что его конфигурация безопасна. Накладные расходы на шифрование минимальны даже на нетбуке. – Gilles 16 November 2010 в 04:42
  • 3
    По умолчанию ssh-сервер также не установлен. ;) – JanC 16 November 2010 в 04:50
  • 4
    @JanC: Еще одно преимущество ssh в том, что если вы включили переадресацию агента, вам не нужно будет вводить пароль для копирования. Эффективность рабочего процесса над вычислительной микроэффективностью. – Gilles 16 November 2010 в 12:23
  • 5
    Конечно, вы можете сделать что-то подобное (некоторые) и другие услуги. В любом случае есть несколько подобных решений, которые связаны с настройкой туннелированного подключения и дополнительного демона ...;) – JanC 16 November 2010 в 12:56

Я придумал способ сделать это со стандартным ssh. Это скрипт, который дублирует текущее соединение ssh, находит ваш рабочий каталог на удаленном компьютере и копирует обратно указанный вами файл на локальный компьютер. Для конфигурации ssh требуется 2 очень маленьких скрипта (1 удаленный, 1 локальный) и 2 строки. Шаги следующие:

Добавьте эти 2 строки к вашему ~/.ssh/config:
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h:%p
Теперь, если у вас есть ssh-соединение с machineX open, вам не нужны пароли, чтобы открыть другой. Создайте 1-строчный скрипт на удаленном компьютере под названием ~/.grabCat.sh
\#!/bin/bash<br>
cat "$(pwdx $(pgrep -u $(whoami) bash) | grep -o '/.*' | tail -n 1)"/$1
Создайте сценарий на локальном компьютере с именем ~ / .grab.sh
\#!/bin/bash
[ -n "$3" ] && dir="$3" || dir="."
ssh "$1" ".grabCat.sh $2" > "$dir/$2"
и создайте псевдоним для grab.sh in (~/.bashrc или где угодно) :
alias grab=~/.grab.sh

Вот и все. Теперь, если вы вошли в machineX:/some/directory, просто запустите новый терминал и введите

grab machineX filename

. Он помещает файл в ваш текущий рабочий каталог на локальном компьютере. Вы можете указать другое местоположение в качестве третьего аргумента для «захвата».

Примечание. Очевидно, что оба сценария должны быть «исполняемыми», то есть chmod u+x filename.

10
ответ дан 26 May 2018 в 00:24
  • 1
    Интересно, не могли бы вы объяснить, как это работает? Можете ли вы расширить это для поддержки " put " файлы, а также захват их? – Peter Gibson 22 June 2014 в 05:55

Если ваш клиентский компьютер (машина, на которой вы сидите), называется машиной А, а машина, на которой вы в настоящее время подключены SSH, называется машиной B. MachineA, ваша локальная машина должна иметь SSHD и открыть порт 22. Затем:

scp myfile machineA:

Копирует myfile на MachineB в мой домашний каталог MachineA на machineA. Это предполагает, что идентификатор пользователя / пароль совпадают.

scp myfile machineA:/newdir/newname

Копирует myfile один MachineB на /newdir/newname на machineA.

scp MachineA:/path/to/my/otherfile . 

Получает копию otherfile из моего каталога MachineA на MachineA и помещает ее в мой текущий рабочий каталог на машине MachineB (обозначается стандартным способом UNIX символом «точка» (.)).

Если идентификатор пользователя / пароль не совпадают, используйте:

scp myfile user@MachineA:, чтобы получить файл.

[ f9] для размещения файлов

ПРИМЕЧАНИЯ о SCP:

Как и команда cp, scp имеет параметр -p для распространения настроек разрешения исходного файла на копия (в противном случае копия выполняется с обычными настройками для новых файлов) и параметр -r для копирования всего дерева каталогов с помощью одной команды.

scp создает полностью прозрачный зашифрованный канал данных между две машины, поэтому двоичные данные (например, изображения или исполняемые программы) сохраняются правильно. Это также означает, что scp не может выполнить автоматическое окончательное окончание преобразования между различными типами операционных систем, как это может быть сделано с ftp в режиме «ascii». Это не будет проблемой при копировании между Unix-системами, которые используют одно и то же соглашение конца строки.

5
ответ дан 26 May 2018 в 00:24

, если вы получаете доступ к серверу через ssh, вы получаете возможность подключаться через sftp. Храните файл filezilla client (GUI) удобным и вставьте путь, в котором вы сейчас находитесь

2
ответ дан 26 May 2018 в 00:24
  • 1
    Это поможет более подробно, включая подключение к SSH-серверу с FileZilla (это не очевидно). Скриншоты также могут помочь, в дополнение к пояснительному тексту . – Eliah Kagan 8 September 2012 в 11:49

Это не над активным соединением SSH, но scp копирует файлы, используя те же механизмы и разрешения, что и ssh.

1
ответ дан 26 May 2018 в 00:24
  • 1
    Я знаю scp, но это очень разрозненный рабочий процесс. Если я работаю в данном удаленном каталоге, мне нужно получить удаленный путь, отключить (или создать другую оболочку), выполнить scping, выписывая пути, а затем снова подключаться. Я ищу что-то, что сродни написанию get file, и оно волшебным образом появляется на моей локальной машине. Если это нужно сделать через некоторую службу, туннелированную через SSH, пусть будет так. Но она должна быть связана с сеансом. – Oli♦ 15 November 2010 в 20:30
  • 2
    Плюс это было заменено sftp (см. Мой ответ) – Olivier Lalonde 16 November 2010 в 05:40
  • 3
    @Oli. Поскольку оба конца транзакции - это * nix-боксы, они, вероятно, оба sshd работают, и поэтому вы должны иметь возможность использовать scp в командной строке сервера для возврата файлов обратно клиенту. Магия так много, что нужно ходить; иногда нам еще нужно нажимать кнопки. Решение FileZilla также удобно. – zerobandwidth 13 September 2015 в 22:21

Это невозможно для сеанса ssh по умолчанию, но вы можете использовать скрипт вместо ssh, который запускает что-то вроде простого ftp или rsh-сервера в вашей локальной системе и запускает ssh с необходимыми параметрами для настройки туннеля назад на ваш рабочий стол для подключения к этому серверу.

1
ответ дан 26 May 2018 в 00:24

konsole обладает этой способностью через меню «Редактировать-> ZModem Upload», когда вы находитесь в удаленном сеансе (или Ctrl-Alt-U).

Обратите внимание: пакет lrzsz должен быть установленный первым. Для меня, похоже, работает только для загрузки файлов ASCII.

1
ответ дан 26 May 2018 в 00:24

Если ваш файл достаточно мал, вы можете закодировать его с base64 и затем его локализовать локально:

remote.example.net$ base64 <myfile (copy the output) local.example.net$ base64 -d >myfile (copy the output) Ctrl+D

Оригинальный ответ, где я получил это (и протестировал): https: / /unix.stackexchange.com/a/2869/194134

1
ответ дан 26 May 2018 в 00:24

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

Вот как я часто это делаю:

из первого терминала, тот, где выполняется сеанс ssh, я получаю полный путь к файлу, который мне нужно получить, используя либо realpath myfile или readlink -f myfile (более старые версии Ubuntu не предустанавливают realpath) и копируют его. из второго терминала я использую scp или sftp, чтобы получить файл, вставив полный путь, который я получил до этого. Например: scp user@host:/etc/some/file ./

Это довольно простой, но он также легко запоминается и не нуждается в дополнительном пакете для работы.

0
ответ дан 26 May 2018 в 00:24
  • 1
    Не помогает с «попыткой получить корневой файл и вход в систему с помощью root напрямую запрещен», проблема, поставленная в вопросе. – Oli♦ 20 January 2018 в 14:04

Если ваш файл достаточно мал, вы можете закодировать его с base64 и затем его локализовать локально:

remote.example.net$ base64 <myfile (copy the output) local.example.net$ base64 -d >myfile (copy the output) Ctrl+D

Оригинальный ответ, где я получил это (и протестировал): https: / /unix.stackexchange.com/a/2869/194134

1
ответ дан 25 July 2018 в 22:53

Если ваш клиентский компьютер (машина, на которой вы сидите), называется машиной А, а машина, на которой вы в настоящее время подключены SSH, называется машиной B. MachineA, ваша локальная машина должна иметь SSHD и открыть порт 22. Затем:

scp myfile machineA:

Копирует myfile на MachineB в мой домашний каталог MachineA на machineA. Это предполагает, что идентификатор пользователя / пароль совпадают.

scp myfile machineA:/newdir/newname

Копирует myfile один MachineB на /newdir/newname на machineA.

scp MachineA:/path/to/my/otherfile .

Получает копию otherfile из моего каталога MachineA на MachineA и помещает ее в мой текущий рабочий каталог на машине MachineB (обозначается стандартным способом UNIX символом «точка» (.)).

Если идентификатор пользователя / пароль не совпадают, используйте:

scp myfile user@MachineA:, чтобы получить файл.

scp user@MachineA:/path/to/my/otherfile . для размещения файлов

ПРИМЕЧАНИЯ о SCP:

Как и команда cp, scp имеет параметр -p для распространения настроек разрешения исходного файла на копия (в противном случае копия выполняется с обычными настройками для новых файлов) и параметр -r для копирования всего дерева каталогов с помощью одной команды.

scp создает полностью прозрачный зашифрованный канал данных между две машины, поэтому двоичные данные (например, изображения или исполняемые программы) сохраняются правильно. Это также означает, что scp не может выполнить автоматическое окончательное окончание преобразования между различными типами операционных систем, как это может быть сделано с ftp в режиме «ascii». Это не будет проблемой при копировании между Unix-системами, которые используют одно и то же соглашение конца строки.

5
ответ дан 25 July 2018 в 22:53

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

Вот как я часто это делаю:

из первого терминала, тот, где выполняется сеанс ssh, я получаю полный путь к файлу, который мне нужно получить, используя либо realpath myfile или readlink -f myfile (более старые версии Ubuntu не предустанавливают realpath) и копируют его. из второго терминала я использую scp или sftp, чтобы получить файл, вставив полный путь, который я получил до этого. Например: scp user@host:/etc/some/file ./

Это довольно простой, но он также легко запоминается и не нуждается в дополнительном пакете для работы.

0
ответ дан 25 July 2018 в 22:53
  • 1
    Не помогает с «попыткой получить корневой файл и вход в систему с помощью root напрямую запрещен», проблема, поставленная в вопросе. – Oli♦ 20 January 2018 в 14:04

Это невозможно для сеанса ssh по умолчанию, но вы можете использовать скрипт вместо ssh, который запускает что-то вроде простого ftp или rsh-сервера в вашей локальной системе и запускает ssh с необходимыми параметрами для настройки туннеля назад на ваш рабочий стол для подключения к этому серверу.

1
ответ дан 25 July 2018 в 22:53

konsole обладает этой способностью через меню «Редактировать-> ZModem Upload», когда вы находитесь в удаленном сеансе (или Ctrl-Alt-U).

Обратите внимание: пакет lrzsz должен быть установленный первым. Для меня, похоже, работает только для загрузки файлов ASCII.

1
ответ дан 25 July 2018 в 22:53
  • 1
    Это поможет более подробно, включая подключение к SSH-серверу с FileZilla (это не очевидно). Скриншоты также могут помочь, в дополнение к пояснительному тексту . – Eliah Kagan 8 September 2012 в 11:49

Это не над активным соединением SSH, но scp копирует файлы, используя те же механизмы и разрешения, что и ssh.

1
ответ дан 25 July 2018 в 22:53
  • 1
    Я знаю scp, но это очень разрозненный рабочий процесс. Если я работаю в данном удаленном каталоге, мне нужно получить удаленный путь, отключить (или создать другую оболочку), выполнить scping, выписывая пути, а затем снова подключаться. Я ищу что-то, что сродни написанию get file, и оно волшебным образом появляется на моей локальной машине. Если это нужно сделать через некоторую службу, туннелированную через SSH, пусть будет так. Но она должна быть связана с сеансом. – Oli♦ 15 November 2010 в 20:30
  • 2
    Плюс это было заменено sftp (см. Мой ответ) – Olivier Lalonde 16 November 2010 в 05:40
  • 3
    @Oli. Поскольку оба конца транзакции - это * nix-боксы, они, вероятно, оба sshd работают, и поэтому вы должны иметь возможность использовать scp в командной строке сервера для возврата файлов обратно клиенту. Магия так много, что нужно ходить; иногда нам еще нужно нажимать кнопки. Решение FileZilla также удобно. – zerobandwidth 13 September 2015 в 22:21

Удивительно, но я не вижу упоминания о добром старшем Midnight Commander. На мой взгляд, это, наверное, самый универсальный & amp; полезный файловый менеджер для оболочки с мощными возможностями, один из инструментов «должен иметь» для случая, который также позволяет вам подключаться через SSH, FTP, SFTP, а на второй панели вы можете открыть любой другой (ваш локальной) файловой системы и, следовательно, работать с файлами свободно.

Все, что вам нужно, это: Midnight Commander (из юниверса)

После этого запустите mc, откройте меню для левой или правой панели, выберите соединение с оболочкой , введите имя пользователя @ remote-ip, пароль - на самом деле, вот и все .. копировать (здесь: скачать) файлы / папки с одной машины на другую с помощью F5, перемещаться с помощью F6 и т. д. согласно кнопкам ниже. Для старых пользователей MS: как в NC для DOS

0
ответ дан 25 July 2018 в 22:53

Я придумал способ сделать это со стандартным ssh. Это скрипт, который дублирует текущее соединение ssh, находит ваш рабочий каталог на удаленном компьютере и копирует обратно указанный вами файл на локальный компьютер. Для конфигурации ssh требуется 2 очень маленьких скрипта (1 удаленный, 1 локальный) и 2 строки. Шаги следующие:

Добавьте эти 2 строки к вашему ~/.ssh/config: ControlMaster auto ControlPath ~/.ssh/socket-%r@%h:%p Теперь, если у вас есть ssh-соединение с machineX open, вам не нужны пароли, чтобы открыть другой. Создайте 1-строчный скрипт на удаленном компьютере под названием ~/.grabCat.sh \#!/bin/bash<br> cat "$(pwdx $(pgrep -u $(whoami) bash) | grep -o '/.*' | tail -n 1)"/$1 Создайте сценарий на локальном компьютере с именем ~ / .grab.sh \#!/bin/bash [ -n "$3" ] && dir="$3" || dir="." ssh "$1" ".grabCat.sh $2" > "$dir/$2" и создайте псевдоним для grab.sh in (~/.bashrc или где угодно) : alias grab=~/.grab.sh

Вот и все. Теперь, если вы вошли в machineX:/some/directory, просто запустите новый терминал и введите

grab machineX filename

. Он помещает файл в ваш текущий рабочий каталог на локальном компьютере. Вы можете указать другое местоположение в качестве третьего аргумента для «захвата».

Примечание. Очевидно, что оба сценария должны быть «исполняемыми», то есть chmod u+x filename.

10
ответ дан 25 July 2018 в 22:53
  • 1
    Интересно, не могли бы вы объяснить, как это работает? Можете ли вы расширить это для поддержки & quot; put & quot; файлы, а также захват их? – Peter Gibson 22 June 2014 в 05:55

Предполагая, что вы используете ssh-сервер на своем рабочем столе (есть способы обойти это, но я думаю, что все они добавляют сложность и, возможно, проблемы с безопасностью), вы можете настроить обратный туннель ssh. См. SSH, который легко копирует файл в локальную систему.

Введите Enter ~C Введите -R 22042:localhost:22 Enter, чтобы создать обратную переадресацию порта с вашего сервера на ваш рабочий стол (22042 может быть любым номером порта от 1024 до 65534, который не используется ). Затем scp -P 22042 foo localhost: скопирует файл foo в ваш текущий каталог на сервере в ваш дом на рабочем столе. Теперь переместите файл в ваш текущий каталог на рабочем столе, набрав Enter ~ Ctrl + Z mv ~/foo . Enter fg Enter.

SSH легко копирует файл в локальную систему. начинается с ~; тильда распознается только после новой строки. ~ Ctrl+Z помещает ssh в фоновый режим. ~C входит в командную строку, где вы можете создать или удалить переадресацию.

24
ответ дан 25 July 2018 в 22:53
  • 1
    Использование 2-х уровней шифрования & amp; сжатие немного перебор, поэтому я предложил использовать rsh или ftp для «обратной ссылки». – JanC 16 November 2010 в 04:30
  • 2
    @JanC: для этого требуется больше настроек: вам нужно установить сервер rsh или ftp и убедиться, что его конфигурация безопасна. Накладные расходы на шифрование минимальны даже на нетбуке. – Gilles 16 November 2010 в 04:42
  • 3
    По умолчанию ssh-сервер также не установлен. ;) – JanC 16 November 2010 в 04:50
  • 4
    @JanC: Еще одно преимущество ssh в том, что если вы включили переадресацию агента, вам не нужно будет вводить пароль для копирования. Эффективность рабочего процесса над вычислительной микроэффективностью. – Gilles 16 November 2010 в 12:23
  • 5
    Конечно, вы можете сделать что-то подобное (некоторые) и другие услуги. В любом случае есть несколько подобных решений, которые связаны с настройкой туннелированного подключения и дополнительного демона ...;) – JanC 16 November 2010 в 12:56

Если ваш файл достаточно мал, вы можете закодировать его с base64 и затем его локализовать локально:

remote.example.net$ base64 <myfile (copy the output) local.example.net$ base64 -d >myfile (copy the output) Ctrl+D

Оригинальный ответ, где я получил это (и протестировал): https: / /unix.stackexchange.com/a/2869/194134

1
ответ дан 27 July 2018 в 01:09

Другие вопросы по тегам:

Похожие вопросы: