我正在尝试设置我的家庭网络服务器(Ubuntu Server 12.04),以便我可以从家庭网络外部通过 ssh 连接到它,以及连接到我在其上创建的 MySQL 数据库。
目前,我知道端口 80 可以正确响应请求。我已在其上运行 Apache,因此不存在任何问题。但是,当我尝试通过 SSH 连接到服务器时,没有收到响应,当我通过 MySQL 连接到端口 3306 时也没有收到响应(错误 2003,无法连接到服务器 (10060))。我可以使用 phpmyadmin 从浏览器进行连接,但这对于通过 PHP 进行连接毫无用处。
我已为端口 80、22 和 3306 设置了端口转发,但我不知道还应该做什么。如果答案显而易见/简单易懂,请原谅我 - 我已经尝试修复此问题几个月了。
编辑
端口 22 和 3306的输出netstat -atn | grep [port]
如下:
(22)
tcp 0 0 0.0.0:22 0.0.0.0:* Listen
tcp 0 0 127.0.0.1:53822 127.0.0.1:40896 Established
tcp 0 0 127.0.0.1:40896 127.0.0.1:53822 Established
tcp6 0 0 :::22 :::* Listen
(3306)
tcp 0 0 0.0.0:3306 0.0.0.0:* Listen
谢谢。
答案1
SSH - 确保安装了 SSH 服务器
sudo apt-get install openssh-server
MYSQL - 确保允许外部连接
sudo nano /etc/mysql/my.cnf
bind-address
如果您想授予外部连接的访问权限,请注释掉。
您需要确保连接到 MySQL 的用户可以从本地主机地址之外访问。
答案2
检查路由器的防火墙设置,确保端口 22、80 和 3306 已打开。
端口转发通常不会自动打开路由器防火墙上的端口 - 我意识到这似乎很愚蠢且微不足道,但我以前的一个家用路由器(Orange UK 的 LiveBox)就被这个错误困扰过。
答案3
哇,UFW 的 iptables 真是太糟糕了,在我看来,防火墙上的 ssh 并没有被解除阻止
sudo ufw status
看看哪些是允许的,哪些是阻止的,然后尝试
sudo ufw allow ssh
我在这里找到了一个很好的指南http://blog.bodhizazen.net/linux/firewall-ubuntu-servers/你可以看一下,或者我使用旧的、久经考验的方法生成 bash iptables 脚本(来自http://www.mista.nu/iptables/) 并在启动时从 rc.local 运行它。