有没有办法在不使用交互式密码autentification和非公钥的情况下执行ssh连接,我也需要在远程服务器上运行一个命令,所有这些都不需要人工干预,我知道我可以使用{{1但我没有任何例子。应用程序将在不同的机器上运行,因此为每台机器创建一个关键公共文件有点困难。
答案 0 :(得分:2)
使用正确的配置可以实现一切,但需要考虑一些安全点。
您当然不希望网络上的每个人都能够在您的服务器上执行任何命令。所以简单地允许一切都不是一个好主意。
在您控制的计算机上拥有应用程序的每个人都可以完成您的应用程序可以执行的所有操作......如果应用程序有限制只能构建本身而不是服务器端,那么可能更多。
您可以使用您的应用程序分发私钥(并在连接时传递给SSH),但当然任何拥有该应用程序的人都可以提取此密钥。 (如果应用程序可以访问它,那么任何可以控制它的攻击者都可以访问它。)
您也可以在应用程序中分发密码,并以某种方式将密码传递给ssh,但原则上,任何拥有该应用程序的人都可以获取密码。
如果总是执行相同的命令(可能使用不同的输入),则可以在服务器端强制执行此特定命令 - 例如,对于authorized_keys文件中的特定公钥。或者您可以创建一个SSH子系统,并且只允许通过服务器配置。
在服务器端,您可以通过IP地址或主机名添加其他限制,但这不是很安全(例如,IP地址可以伪造)。如果要运行应用程序的计算机已经存在SSH安装,则它们应该具有主机密钥,并且您可以执行主机身份验证。但是,如果这些主机在您的控制之下,或多或少,这仍然非常有用。
答案 1 :(得分:1)
答案 2 :(得分:0)
在debian上,存在一个工具,它被称为sshpass (a noninteractive ssh password provider)
虽然有很多警告和警告!在继续沿着这条路走下去之前,请务必正确评估风险...