我有Ubuntu服务器作为我的PHP网站灯服务器。
mysql服务器被安装并且为localhost端口打开。
我已经阅读了如何隧道SSH到我的MySQL服务器。
但我还没有明白为什么这比直接打开互联网端口的MySQL服务器更好。
无论如何,黑客可能会蛮横的强制端口的密码。 如果打开公共端口(3306),或者使用隧道,则为ssh(22)。
那么为什么使用ssh tunneling for mysql(以及许多其他服务器应用程序)更好呢?
如果您使用SSH隧道,那么您的SSH和MySQL密码在通信过程中都会被encryption – 以及通过隧道的所有数据。 如果您不使用SSH隧道,而且您没有使用MySQL的SSL支持,则不会进行encryption,恶意的第三方可能会使用数据包嗅探或其他恶意手段窃听您的通信。
另外,如果您正在使用SSH隧道,那么如果远程计算机的SSH密钥更改,您将会收到警报。 标准MySQL不会发生这种情况,这意味着攻击者可以使用IP欺骗或中间人攻击来干扰/干扰/窃听您的通信。
有关更多信息,请参阅:
但我还没有明白为什么这比直接打开互联网端口的MySQL服务器更好。 无论如何,黑客可能会蛮横的强制端口的密码
简单的答案是,有一种文化相信SSH比MySQL更安全。 SSH方法的支持者可能会争辩说,MySQL的密码交换协议在过去已经被破解,所以最好依靠SSH。
你说得对,但是。 SSH密码可以像MySQL密码一样简单地被强制。
幸运的是,SSH支持许多authentication方法,密码只是其中之一。 对于面向互联网的主机,我已经看到系统pipe理员完全禁用密码authentication,而select更强大的方法,如公钥authentication。 请参阅sshd_config(5)中的RSAAuthentication以及ssh-keygen(1)以获取有关公钥身份validation的更多信息。
希望这可以帮助!
除非您有充分的理由,否则我不会使用SSH隧道来处理应用程序stream量。 如果应用程序与数据库在同一台服务器上运行,则应该使用MySQL套接字并禁用MySQL的networking连接。 如果服务器直接在Internet上运行,则尤其如此。
如果您有多个服务器,则可以在MySQL中本地使用SSL来encryption传输中的stream量。
我怀疑你是指使用SSH隧道进行客户端连接的大型环境中的开发人员。 通常情况下,这是因为防火墙访问不是直接授予MySQL,而是允许SSH访问,SSH将在不增加MySQL占用空间的情况下实现解决scheme。
MySQL使用SSL进行安全连接
因为你可以在MySQLauthentication之前使用证书authentication。