与ssh共享公共密钥

是否有可能以某种方式设置不需要用户名,密码或证书login的SSH服务器? 如果这是不可能的,如果我要给所有客户相同的公钥,每个连接都要单独encryption吗? (即,用户A不解密用户B的连接的有效载荷)

我希望提供访问一个单一的程序,这将提示input用户名和密码。

虽然encryption是必不可less的,用户也不能互相窥探

谢谢

我不认为你可以删除authentication的SSH部分,因为你总是需要一个用户名来打开一个会话,但你可以设置一个空白的密码,并在您的sshdconfiguration中设置PermitEmptyPasswords为yes。
但是这不是很安全,使用密钥authentication更好。

如果你给你的客户一个公钥,这意味着他们可以让你连接到他们的SSH服务器,而不是你的。
我想你想让客户连接到你的SSH服务器。 在这种情况下,客户需要给你他们的公钥,你将允许他们连接。 如果所有客户都使用相同的公钥连接到您的SSH服务器,这意味着所有的客户使用相同的私钥,这不是一个选项(这不是你的angular色提供私钥和私钥不应该共享)

关于encryption和监听,使用会话密钥而不是公钥/私钥进行encryption,但交换会话密钥ssh使用公钥/私钥。
因此,如果所有的客户使用相同的私钥,如果他们从开始时监听会话,他们可以解密会话,如果他们在会话密钥交换之后监听会话,则解密会话将是非常困难的。

关于ssh的一个很好的文章http://www.eng.cam.ac.uk/help/jpmg/ssh/ssh-detail.html

比较晚了,但是你可以强制用户在login(通过任何方式)运行一个特定的程序,通过在/ etc / passwd中将它们的shell设置为该程序。 我相信在使用.sshrc文件使用sshd的时候有一个更复杂的方法,但是我并不是假设你使用的是OpenSSH,尽pipe这些都在man文件中。

把私钥当作秘密 。 当你要certificate一些东西,比如你的身份,在这种情况下,你可以声称你知道一个秘密 ,在这种情况下,私人的SSH密钥。 公开的关键是:“公开”,在这个意义上,它不能用来certificate什么。

这与不给予多个用户相同的私钥的build议一致 。 大量的安全漏洞来源于尝试使安全过程减less负担。 也有安全的方法来做到这一点。 但是你作为pipe理员,将不得不做出工作,否则你会自动让你的networking和它的用户打开攻击。

“不要走捷径”

坚持使用用户名和密码,如果你打算问顾客一个反正。 如果您将其embedded到客户端软件中,则需要为所有客户提供相同的私钥,以便他们可以访问任何密钥,也就是服务器上的任何帐户。

你真的想为每个用户创build单独的帐户,当客户期望不得不input用户名和密码时,没有真正的理由使用密钥(他们会很困惑,如果他们不必给每次都有一个密码)。

为了保持简单的支持,你需要很容易地改变用户的用户名和密码 – 可能是一个运行LDAP的中央目录服务器,它具有友好的GUI界面。

用户能够相互窥探,因为他们可以访问其他进程的内存空间(假设他们可以运行任意程序)。