我有一个要求,我希望我的 C++ 程序的用户能够在特定机器上进行无密码 ssh,但同一个用户不能通过普通终端/shell 在同一台机器上进行 ssh。
答案1
在 Unix 系统上,您应该将程序的可执行文件设置为 setuid,以便它可以ssh -i
根据身份文件运行,否则运行该程序的用户将无法访问该文件。该身份文件将验证对远程计算机的访问。
答案2
你可以对 SSH 进行硬编码私人的键入程序源(或使用钥匙串 - 更清洁,更易于维护),然后附加相关的民众远程主机 authorized_keys 文件的密钥。
答案3
使用私钥认证并禁用服务器上的其他认证方法。
此外,您还可以使用服务器的 sshd_config 中的 ForceCommand 指令来仅允许运行给定的命令。