![我可以将 apache 配置为限制仅通过 ssh 连接访问目录吗?](https://linux22.com/image/51985/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%B0%86%20apache%20%E9%85%8D%E7%BD%AE%E4%B8%BA%E9%99%90%E5%88%B6%E4%BB%85%E9%80%9A%E8%BF%87%20ssh%20%E8%BF%9E%E6%8E%A5%E8%AE%BF%E9%97%AE%E7%9B%AE%E5%BD%95%E5%90%97%EF%BC%9F.png)
我有一个运行多个网站的虚拟机。所有用户都可以通过机器的外部 IP 地址访问这些内容。我在这台机器上运行 Debian Stable。
我可以通过访问机器ssh
并对其进行组织,因此我将本地10080
端口转发到,localhost:80
以便我可以将浏览器连接到本地主机端口10080
/phpmyadmin 并获得对 phpmyadmin 的访问权限。我的机器在192.168.0.0/24
网络上
问题是,您还可以通过任何外部网站访问它 - 因为 Debian 已将其放置在顶级 Apache 配置中。
我想限制仅通过ssh
端口的连接的访问。但似乎没有相当于目录的监听指令。
但是,有来自 IP_address 的允许。当我通过隧道时,apache 认为我连接的是哪个 IP 地址ssh
。
答案1
好的,这个问题解决起来比较简单。
您可以使用以下方式访问您的服务器
ssh -L 5580:localhost:80 www.servername.tld
然后你通过以下方式访问你的 phpmyadmin
http://localhost:5580/phpmyadmin/
因为 Debian 已将其放置在
如果你有 M$,你可以这么说,但你有 Debian,所以你可以根据需要更改默认值。 :-)
但是,有来自 IP_address 的允许。当我通过 ssh 隧道时,apache 认为我连接的是哪个 IP 地址。
与您已经使用过的相同:localhost
最简单的解决方案在这里,你已经说过了
# /etc/phpmyadmin/apache.conf
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
...
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
另一个解决方案是侦听附加端口以独占访问 phpmyadmin:
要更改的文件:
# /etc/apache2/ports.conf
Listen localhost:8880
和
# /etc/phpmyadmin/apache.conf
<VirtualHost *:8880>
ServerName localhost
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
...
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
最终
apache2ctl configtest
apache2ctl restart
重定向命令
ssh -L 5580:localhost:8880 www.servername.tld
并连接到
http://localhost:5580/phpmyadmin/