为什么在 mysql 服务器上使用 ssh 隧道?

ajs*_*sie 2 mysql ssh lamp

我有 ubuntu 服务器充当我的 php 网站的灯服务器。

mysql 服务器已安装并为 localhost 端口打开。

我已经阅读了有关如何通过 ssh 隧道连接到我的 mysql 服务器的信息。

但我不明白为什么这比直接为 Internet 端口打开 mysql 服务器更好。

无论哪种方式,黑客都可以暴力破解端口以获取密码。mysql 端口 (3306)(如果对公众开放)或 ssh(22)(如果使用隧道)。

那么为什么对 mysql(以及许多其他服务器应用程序)使用 ssh 隧道更好呢?

Jos*_*osh 6

如果您使用 SSH 隧道,那么您的 SSH 和 MySQL 密码在通信期间都会被加密——以及通过隧道的所有数据。如果您没有使用 SSH 隧道并且没有使用 MySQL 的 SSL 支持,则没有加密,恶意第三方可能会使用数据包嗅探或其他恶意手段来窃听您的通信。

此外,如果您使用 SSH 隧道,那么如果远程机器的 SSH 密钥更改,您将收到警报。这不会发生在标准 MySQL 中,这意味着攻击者可以使用 IP 欺骗或中间人攻击来破坏/干扰/窃听您的通信。

有关更多信息,请参阅:

  • “如果您不使用 SSH 隧道,则不会进行加密” - 只有在您不使用 SSL 时才会如此 (http://dev.mysql.com/doc/refman/5.1/en/secure-using-ssl .html)。 (2认同)

mba*_*768 5

但我不明白为什么这比直接为 Internet 端口打开 mysql 服务器更好。无论哪种方式,黑客都可以暴力破解密码端口

简单的答案是,有一种文化相信 SSH 比 MySQL 的安全性更好。SSH 方法的支持者可能会争辩说 MySQL 的密码交换协议在过去已经受到损害,因此最好依赖 SSH。

不过你说得对。SSH 密码几乎和 MySQL 密码一样容易被暴力破解。

幸运的是,SSH 支持多种身份验证方法,密码只是其中之一。对于面向 Internet 的主机,我看到系统管理员完全禁用密码身份验证,而是选择更强大的方法,例如公钥身份验证。请参阅 sshd_config(5) 中的 RSAAuthentication,以及 ssh-keygen(1) 以获取有关公钥身份验证的更多信息。

希望这可以帮助!