Выполнить команду SSH с системой () - PullRequest
0 голосов
/ 01 мая 2019

У меня есть приложение C ++ (под linux), которое открывает обратный туннель ssh.Это хорошо работает.Но у меня есть некоторые проблемы, чтобы закрыть соединение.Команда закрытия будет работать так, как должно, когда я запускаю приложение из командной строки, но когда я запускаю приложение из задания cron в фоновом режиме, соединение не будет закрыто.

Вот мой код:

Открытое соединение:

std::string cmd = "ssh -o StrictHostKeyChecking=no -f -N -T -M -R 8003:192.168.0.1:8001 -R 8007:192.168.0.1:8005 -R 22222:localhost:22 sshService";
system(cmd.c_str());

Чтобы закрыть соединение, я использую:

std::string cmd = "ssh -T -O exit sshService";
system(cmd.c_str());

Моя конфигурация хоста:

Host sshService
    HostName www.addressOfServer.com
    User sshUser
    ControlPersist 4h
    ControlPath ~/.ssh/sshService.ctl
    IdentityFile /home/user/sshUser

Есть некоторые идеичто я делаю не так?Или какие-то идеи, как я могу выяснить проблему?

1 Ответ

0 голосов
/ 01 мая 2019

Нашел проблему. Похоже, я должен использовать путь tmpfs для пути управления .... Я изменил конфигурацию на:

Host sshService
    HostName www.addressOfServer.com
    User sshUser
    ControlPersist 4h
    ControlPath /tmp/sshService.ctl
    IdentityFile /home/user/sshUser
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...