У меня есть требование, когда я хочу, чтобы пользователь моей программы на C++ мог делать ssh без пароля на определенной машине, но тот же пользователь не должен иметь возможность делать ssh на той же машине через обычный терминал / оболочку.
3 ответа
В системе Unix вы должны установить для исполняемого файла setuid, чтобы она могла запускать ssh -i
для файла идентификации, иначе недоступного для пользователя, запускающего программу. Этот идентификационный файл будет аутентифицировать доступ к удаленной машине.
Вы можете жестко закодировать закрытый ключ SSH в исходный код программы (или использовать средство для очистки цепочки ключей, более простое в обслуживании), а затем добавить соответствующий открытый ключ в файл авторизованные удаленные хосты.
Используйте аутентификацию с закрытым ключом и отключите другие методы аутентификации на сервере.
Кроме того, вы можете использовать директиву ForceCommand в sshd_config сервера, чтобы разрешить выполнение только данной команды.