1

我已经了解了一些关于通过 putty 设置 SSH 隧道的基础知识。问题一:如何让两个SSH端基于证书相互认证?例如,使用 SSH 隧道进行远程 VNC 访问......

VNC == SSH (A) ===== SSH (B) === VNC 

我希望 A 和 B 相互验证。有争议的是,VNC 可以有自己的保护密码。但这不是重点。我可以在 A 和 B 上运行许多不一定具有 usr/pwd 保护的应用程序。

我检查了腻子配置,似乎没有使用证书的选项。有人建议使用 stunnel,但我想看看是否可以直接使用 SSH。谢谢你的建议。

4

1 回答 1

2

您需要使用证书的任何特殊原因,而不仅仅是 ssh 密钥?我知道的唯一原因是,它减轻了主机管理员的负担,无需在authorized_keys有很多用户登录的主机上管理复杂的文件配置。

OpenSSH 在 5.4 版本中引入了证书,因此请确保您至少在服务器端运行该版本。客户端也必须支持 SSH 证书,目前我不清楚 putty 是否支持它。但是,它确实支持 ssh 密钥,除非您特别需要证书,否则您只需要基于密钥的身份验证。

这是关于 SSH 证书的好读物:http: //blog.habets.pp.se/2011/07/OpenSSH-certificates

如果您只需要在不提示输入密码的情况下登录,那么只需使用 ssh 密钥(这就是证书所使用的)。

你这样说:

我希望 A 和 B 相互验证。

无论您使用密钥还是证书,您都已经从 ssh 协议本身获得了这一点。当客户端连接到服务器时,它会将主机密钥与其本地known_hosts文件进行比较。如果这是您第一次访问该服务器,它会询问您是否要接受它。如果在您登录后服务器的密钥发生了变化,您会收到中间人警告,并根据您的客户端配置询问您是否可以继续或根本不允许您继续。

这是服务器向客户端验证自身身份的过程,该过程发生在客户端尝试向服务器进行身份验证之前。

于 2013-01-07T23:07:56.863 回答