我所处的情况是,我无法为ssh进行无密码登录,并且ssh服务器不能在除默认端口之外的任何其他端口上运行。所以,我选择了用特技来引导ssh。在我的个人电脑上,我在客户端模式上使用stunnel,并使用它登录到服务器,如:ssh -p 8888 user@localhost。问题是ssl客户端证书是公开的,因此任何人都可以轻松地为我的服务器设置ssl隧道。如果有人查询https://myserver.com,它会显示openssh2.0运行在ssl端口上。因此,它已经成为一种最简单的入侵方式,比在非默认端口上运行ssl服务器要简单得多。因此,我想知道是否可以将ssl客户端证书设置为私有证书,以便不会提供给在我的服务器上执行https查询的任何人。我应该能像ssl私钥一样保持它的机密性。
发布于 2012-03-06 08:25:26
因此,要澄清:您希望从办公网络中允许密码,但不允许来自其他任何地方。然而,你需要能够从任何地方连接。
在我的网络上,从外部登录时需要SSH密钥,但是当从内部的另一个主机连接时,可以使用密钥或密码。
以下是它的工作原理:
RSAAuthentication yes
PasswordAuthentication no
Match Address 192.168.0.*
PasswordAuthentication yes如果您将office子网替换为192.168.0。*,用户将能够使用密码进行连接,但只能从office子网进行连接。但是,您可以使用SSH键从任何地方进行连接。
当ssh客户端连接到服务器时,会向它提供一个可以尝试的身份验证机制列表。通常情况下,列表是“公钥,密码”。在这种情况下,当有人从外部连接时,他们只会收到“公开密钥”,因此他们的客户端甚至不会试图发送密码。如果它们试图使用SSH公钥以外的任何机制进行身份验证,则服务器将立即关闭连接。所以不存在强行使用密码的可能性。
发布于 2012-03-06 07:32:39
尼克斯诺特森,这是一个真正的问题,好吧,但我完全不明白你认为你想要的东西对你有什么帮助。让我重述这个问题,这样我们就可以看我是否正确地理解了它。
您有一个ssh服务器,它有很多弱用户密码。你希望能够从外部远程登录,但不想让愚蠢的用户这么做,因为这会让所有那些脆弱的用户密码暴露在针对不受保护的sshds的恶意密码猜测中。如果你运行sshd,它就必须运行在端口22上。
到目前为止我还好吗?
您显然在此服务器上有两个NIC,因此有两个地址,因为您指的是“面向局域网的接口”和“WAN端”。如何设置两个sshds,都运行在端口22。其中一个只能绑定到内部NIC地址(ListenAddress 10.3.4.5),否则是不受限制的,供所有无法选择好密码的本地用户使用。第二个sshd使用不同的配置文件,该配置文件仅绑定到外部接口(ListenAddress 2.3.4.5)上的端口22,该配置文件要么不允许基于密码的身份验证(PasswordAuthentication no),要么只允许某个组成员的用户登录(AllowGroups nixnotwin)?
这些都能解决你的问题吗?
https://serverfault.com/questions/366721
复制相似问题