Проблема в том, что POST super global всегда установлен, он просто пуст. Если вы разместите сообщение var_dump, вы увидите это. Либо проверьте, что переменная post не пуста, либо проверьте, что установлено конкретное значение, например, Исеть (пост [ 'отправить'])
Вот мое предпочтительное решение этой проблемы. Настройте реверс 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>
Положительные стороны:
Отрицательные стороны:
будущая работа: Это все еще довольно топорно. Очевидно, было бы возможно обработать проблему аутентификации путем установки ssh ключей соответственно, и еще легче позволить спецификацию удаленного каталога путем добавления, что параметр для захвата ()
более трудный обращается к другим отрицательным сторонам. Было бы хорошо выбрать динамический порт, но насколько я могу сказать, что нет никакого изящного способа передать тот порт оболочке на удаленном хосте; Настолько лучше всего, как я могу сказать, OpenSSH не позволяет Вам устанавливать произвольные переменные среды на удаленном хосте, и удар не может взять переменные среды от параметра командной строки. Даже если Вы могли бы выбрать динамический порт, нет никакого способа гарантировать, что он не используется на удаленном хосте, не соединяясь сначала.
На поле Linux я использую ssh-агент и sshfs. Необходимо установить sshd для принятия соединений с парами ключей. Тогда Вы используете, ssh-добавляют, чтобы добавить, что Вы вводите к ssh-агенту, таким образом, у Вас нет типа Вашим паролем каждый раз. Обязательно используйте-t секунды, таким образом, ключ не остается загруженным навсегда.
ssh-добавляют-t 3600/home/user/.ssh/ssh_dsa
После этого,
, sshfs hostname://pathtomountto/
смонтирует файловую систему сервера на Вашей машине, таким образом, у Вас будет доступ к нему.
Лично, я записал маленький сценарий удара, которые добавляют мой ключ и монтируют серверы, я использую большинство, поэтому когда я начинаю работать, я просто должен запустить сценарий и ввести мой пароль.
Чтобы сделать это, мне установили мой домашний маршрутизатор до порта передачи 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:~/
Вот взлом, названный ssh-xfer, который решает точную проблему, но требует исправления OpenSSH, который является обреченным на неудачу, насколько я заинтересован.
Необходимо быть в состоянии создать общественность & закрытые ключи так, чтобы никакой автор не был необходим.
, Какой путь Вы, он зависит от требований к защите, и т.д. (знать, что существует linux/unix ssh черви, которые посмотрят на ключи для нахождения других хостов, на которые они могут напасть).
я делаю это все время и из-за linksys и мигаю маршрутизаторами. Я думаю, что Вы, возможно, должны изменить несколько настроек, но это не имеет большого значения.
Использование переключатель-M.
"Места ssh клиент в 'основной' режим для совместного использования соединения. Несколько-M опций помещают ssh в ''основной'' режим с подтверждением, требуемым, прежде чем ведомые соединения будут приняты. Обратитесь к описанию ControlMaster в ssh_config (5) для деталей".
я не вполне вижу, как это отвечает на вопрос OP - можно ли подробно остановиться на этом немного, David?
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 , который имеет схожую функциональность.