我已经了解了一些关于通过例如putty设置SSH隧道的基础知识。 一个问题:如何让两个SSH端基于证书相互验证? 例如,使用SSH隧道进行远程VNC访问......
VNC == SSH (A) ===== SSH (B) === VNC
我希望A和B相互验证。有争议的是,VNC可以拥有自己的密码进行保护。但这不是重点。我可以在A和B上运行许多不一定具有usr / pwd保护的应用程序。
我检查putty配置,似乎没有使用证书的选项。有人建议使用stunnel,但我想看看是否可以直接使用SSH。谢谢你的建议。
答案 0 :(得分:1)
您需要使用证书,而不仅仅是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
文件进行比较。如果这是您第一次去该服务器,它会询问您是否要接受它。如果自您登录后服务器密钥已更改,则会收到“中间人”警告,并根据您的客户端配置询问您是否可以继续,或者只是不让您继续。
这是服务器向客户端验证自身的过程,该过程在客户端尝试向服务器进行身份验证之前发生。