Я пытаюсь подключиться к серверу через S SH из своего приложения C ++ (и отправить команду выключения). Я проинформировал сервер о моем ключе S SH (обновлен авторизованные ключи на моем сервере Freenas на FreeBSD).
Следующая консольная команда работает мгновенно (Manjaro Linux console):
ssh -i /home/[uname]/.ssh/amd_freenas root@freenas.local poweroff
Я пытаюсь использовать следующую команду из моего кода C ++, чтобы сделать то же самое:
execl("/sbin/ssh", "ssh", "-i /home/[uname]/.ssh/amd_freenas", "root@192.168.178.48", "poweroff", (char*)NULL);
Когда вызывается из моей программы, вывод консоли постоянно говорит, что мой S SH -файл не существует, что не соответствует действительности, так как команда direct console также не имеет проблем (на рисунке показано сравнение, верхняя команда была из кода, нижняя была непосредственно в консоли). Вывод ошибки:
Warning: Identity file /home/al/.ssh/amd_freenas not accessible: No such file or directory.
Я попытался изменить разрешения для файла (chmod 600), я попытался переместить его в другое место и прочитать его оттуда. Я понятия не имею, почему это не работает. Этот файл - мой личный ключ, так что это должно быть правильно. Может кто-нибудь помочь?
введите описание изображения здесь