Который является лучшим способом принести файл от удаленного хоста до локального хоста по сессии SSH?

Проблема в том, что POST super global всегда установлен, он просто пуст. Если вы разместите сообщение var_dump, вы увидите это. Либо проверьте, что переменная post не пуста, либо проверьте, что установлено конкретное значение, например, Исеть (пост [ 'отправить'])

14
задан Nick 8 September 2008 в 15:34
поделиться

7 ответов

Вот мое предпочтительное решение этой проблемы. Настройте реверс ssh туннель после создания ssh сессии. Это сделано легким двумя функциями удара: grabfrom () должен быть определен на локальном хосте, в то время как захват () должен быть определен на удаленном хосте. Можно добавить любые другие ssh переменные, которые Вы используете (например,-X или-Y), как Вы считаете целесообразным.

function grabfrom() { ssh -R 2202:127.0.0.1:22 ${@}; };
function grab() { scp -P 2202 $@ localuser@127.0.0.1:~; };

Использование:

localhost% grabfrom remoteuser@remotehost
password: <remote password goes here>
remotehost% grab somefile1 somefile2 *.txt
password: <local password goes here>

Положительные стороны:

  • Это работает без специального программного обеспечения над любым хостом вне OpenSSH
  • , Это работает, когда локальный хост находится позади маршрутизатора NAT
  • , Это может быть реализовано как пара двух коротких функций удара

Отрицательные стороны:

  • Это использует число фиксированного порта так:
    • не будет работать с многочисленными связями к удаленному хосту
    • , мог бы конфликтовать с процессом с помощью того порта на удаленном хосте
  • , Это требует, чтобы localhost приняли соединения SSH
  • , Это требует специальной команды на инициировании сессия
  • , Это неявно не обрабатывает аутентификацию к localhost
  • , Это не позволяет определять целевой каталог на localhost
  • , Если Вы захватите от нескольких localhosts до того же удаленного хоста, то ssh не понравятся ключи, изменяющиеся

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

более трудный обращается к другим отрицательным сторонам. Было бы хорошо выбрать динамический порт, но насколько я могу сказать, что нет никакого изящного способа передать тот порт оболочке на удаленном хосте; Настолько лучше всего, как я могу сказать, OpenSSH не позволяет Вам устанавливать произвольные переменные среды на удаленном хосте, и удар не может взять переменные среды от параметра командной строки. Даже если Вы могли бы выбрать динамический порт, нет никакого способа гарантировать, что он не используется на удаленном хосте, не соединяясь сначала.

0
ответ дан 1 December 2019 в 14:23
поделиться

На поле Linux я использую ssh-агент и sshfs. Необходимо установить sshd для принятия соединений с парами ключей. Тогда Вы используете, ssh-добавляют, чтобы добавить, что Вы вводите к ssh-агенту, таким образом, у Вас нет типа Вашим паролем каждый раз. Обязательно используйте-t секунды, таким образом, ключ не остается загруженным навсегда.
ssh-добавляют-t 3600/home/user/.ssh/ssh_dsa

После этого,
, sshfs hostname://pathtomountto/
смонтирует файловую систему сервера на Вашей машине, таким образом, у Вас будет доступ к нему.

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

4
ответ дан 1 December 2019 в 14:23
поделиться

Чтобы сделать это, мне установили мой домашний маршрутизатор до порта передачи 22 назад к моей домашней машине (который является firewalled, чтобы только принять соединения SSH от моей машины работы), и мне также настраивали учетную запись с DynDNS для обеспечения Динамического DNS, который решит к моему домашнему IP автоматически.

Тогда то, когда я ssh в мой рабочий компьютер, первая вещь я делаю, выполняется сценарий, который запускает ssh-агент (если Ваш сервер не делает этого автоматически). Сценарий, который я выполняю:

#!/bin/bash

ssh-agent sh -c 'ssh-add < /dev/null && bash'

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

Для остальной части сессии, передавая файлы обратно Вашей домашней машине так же просто как

scp file_to_send.txt your.domain.name:~/
0
ответ дан 1 December 2019 в 14:23
поделиться

Вот взлом, названный ssh-xfer, который решает точную проблему, но требует исправления OpenSSH, который является обреченным на неудачу, насколько я заинтересован.

0
ответ дан 1 December 2019 в 14:23
поделиться

Необходимо быть в состоянии создать общественность & закрытые ключи так, чтобы никакой автор не был необходим.

, Какой путь Вы, он зависит от требований к защите, и т.д. (знать, что существует linux/unix ssh черви, которые посмотрят на ключи для нахождения других хостов, на которые они могут напасть).

я делаю это все время и из-за linksys и мигаю маршрутизаторами. Я думаю, что Вы, возможно, должны изменить несколько настроек, но это не имеет большого значения.

-1
ответ дан 1 December 2019 в 14:23
поделиться

Использование переключатель-M.

"Места ssh клиент в 'основной' режим для совместного использования соединения. Несколько-M опций помещают ssh в ''основной'' режим с подтверждением, требуемым, прежде чем ведомые соединения будут приняты. Обратитесь к описанию ControlMaster в ssh_config (5) для деталей".

я не вполне вижу, как это отвечает на вопрос OP - можно ли подробно остановиться на этом немного, David?

-1
ответ дан 1 December 2019 в 14:23
поделиться

zssh ( обертка ZMODEM по openssh) делает точно, что Вы хотите.

  • Установка zssh и использование это вместо openssh (который я предполагаю, что Вы обычно используете)

  • Вы должны будете иметь пакет lrzsz , установленный в обеих системах.

Затем для передачи файла zyxel.png от удаленного до локального хоста:

antti@local:~$ zssh remote
Press ^@ (C-Space) to enter file transfer mode, then ? for help
...
antti@remote:~$ sz zyxel.png
**B00000000000000
^@
zssh > rz
Receiving: zyxel.png
Bytes received:  104036/ 104036   BPS:16059729

Transfer complete
antti@remote:~$ 

Загрузка идет точно так же за исключением того, что Вы просто переключаетесь с пассивной паузой (1) и sz (1) .

пользователи Шпаклевки могут попробовать Le Putty , который имеет схожую функциональность.

9
ответ дан 1 December 2019 в 14:23
поделиться
Другие вопросы по тегам:

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