0

有什么方法可以在不使用交互式密码验证和非公钥的情况下执行 ssh 连接,我也需要在远程服务器中运行命令而无需手动干预,我知道我可以使用 ascript但我没有任何例子。该应用程序将在不同的机器上运行,因此为每台机器创建一个公共密钥有点困难。

4

3 回答 3

2

通过正确的配置,一切皆有可能,但需要考虑一些安全问题。

  • 您当然不希望网络上的每个人都能够在您的服务器上执行任何命令。所以简单地允许一切不是一个好主意。

  • 每个在她控制的计算机上拥有您的应用程序的人都可以做您的应用程序可以做的所有事情......也许更多,如果应用程序有限制只在其自身构建,而不是在服务器端。

  • 您可以在您的应用程序中分发一个私钥(并在连接时传递给 SSH),当然任何拥有该应用程序的人都可以提取此密钥。(如果应用程序可以访问它,那么任何可以控制它的攻击者都可以访问它。)

  • 您也可以随应用程序分发密码并以某种方式将其传递给 ssh,但原则上任何拥有该应用程序的人都可以获得密码。

  • 如果总是有相同的命令要执行(可能有不同的输入),您可以在服务器端强制执行此特定命令 - 例如,对于 authorized_keys 文件中的特定公钥。或者您可以创建一个 SSH 子系统,并且仅通过服务器配置允许这样做。

  • 在服务器端,您可以通过 IP 地址或主机名设置额外的限制,但这并不安全(例如,IP 地址可能是伪造的)。如果要运行应用程序的计算机已经安装了 SSH,它们应该有主机密钥,也许您可​​以进行主机身份验证。但这仍然只有在这些主机或多或少在您的控制之下时才真正有用。

于 2012-02-14T23:45:20.847 回答
1

对于安全问题,除非您以高级方式配置服务器,否则将始终以交互方式询问您密码(如果您不使用证书)。

您可以通过输入一次密码来使用证书。

看看这个

于 2012-02-14T20:11:14.783 回答
0

在 debian 上,存在一个用于此的工具,称为sshpass(非交互式 ssh 密码提供程序)

不过,它带有很多警告和注意事项!在继续这条道路之前,请务必正确评估风险......

于 2012-02-14T20:40:07.267 回答