Я сталкиваюсь с какой-то уникальной проблемой, не знаю, как ее решить.Я использую библиотеку Netsiebin SSH C ++ для соединения с моим сервером.Работает на отлично.Я подключился к удаленному хосту по протоколу SSH2, с аутентификацией с помощью publickey, отправил команду come для выполнения и на сервере.
Но проблема возникает, когда я начал использовать систему SCP или rsync (scp или rsync) между ними.Мне необходимо загрузить некоторые файлы на сервер между ними, а затем снова запустить функцию Netseiben SSH, чтобы запустить этот командный файл на сервере. Но этого не происходит. Всякий раз, когда я использую какую-либо команду scp или rsync, а затем выполняю какую-то функцию netseiben, она продолжает ждатьи никогда не возвращается.
Пример реализации:
- Инициализация Netseiben
Ne7SftpSubsystem _sftp; ne7ssh * _ssh = new ne7ssh ();
2. Соединитесь с ключом
channel1 = _ssh->connectWithKey ("serverAddress", 22, "userame", "pub key path");
3. Отправьте команду и прочитайте результат
_ssh->send ("ls\n", channel1))
_ssh->waitFor (channel1, "$", 5)
result = _ssh->read (channel1); //read result
Системная функция для помещения некоторого файла на сервер (что я считаюпричина для всех)
system ("rsync / home / user / Makefile user @ server: ~"); system ("scp /home/user/file.tgz user @ server: ~ / new");// это выполняет
Отправить команду на сервер (здесь не удается ... Этот оператор никогда не выполняется)
ssh-> send ("mkdir Tester \ n", channel1)
Если у меня нет вышеуказанной «системной» функции для выполнения какой-либо команды, она работает нормально.
Это как-то связано с номером порта.Потому что во время установления соединения я даю номер порта 22, и если я не ошибаюсь, через порт происходит scp, который может вызвать проблемы.хотя не уверен.Занимался этим днем.Спасибо за вашу помощь .