在 SSH 连接上使用真实浏览器而不是 w3m

在 SSH 连接上使用真实浏览器而不是 w3m

ssh我使用 Ubuntu 作为桌面和服务器操作系统。当我通过on登录到服务器terminal并需要查看服务器上的网页(本地主机)时,我使用 w3m ( w3m localhost)。

不幸的是,w3m 不太容易处理,因为页面有一些大菜单并使用 jQuery。所以我想知道是否可以使用桌面上的浏览器通过 SSH 使用真正的浏览器(Firefox 或 Chrome)连接到服务器。

基本上,它需要使用桌面上的浏览器通过 SSH 连接到服务器,username然后password在该服务器上打开localhost

默认情况下可以实现此功能吗?或者是否有 Firefox/Chrome 附加组件?我更喜欢 Firefox。

答案1

使用 ssh 端口转发。

使用如下命令连接到远程服务器:

ssh -L 8080:localhost:80 user@remoteserver

现在,将本地浏览器指向 localhost:8080。它应该转发到远程服务器中的 localhost:80。

答案2

第1部分

使用 ssh 创建一个 socks 代理!

ssh -D 9999 user@remoteserver

现在打开 Firefox 首选项,转到高级 > 网络 > 设置。选择手动代理配置。将 localhost 输入为 SOCKS 主机,将 9999 输入为端口。通过以下方式进行测试:http://whatismyip.org或者一些类似的网站。

因为您说您正尝试访问 localhost(相对于您的服务器)上的网页,所以您可能不想排除 localhost 和 127.0.0.1 使用代理。当然,您可以只使用服务器的本地 IP。

如果您不喜欢我的解释,这些链接在我写这篇文章时唤起了我的记忆:

http://linux.die.net/man/1/ssh

http://embraceubuntu.com/2006/12/08/ssh-tunnel-socks-proxy-forwarding-secure-browsing/

https://calomel.org/firefox_ssh_proxy.html

第2部分

您收到的错误channel 3: open failed: connect failed: Connection refused与 ssh 完全无关。显然您正在尝试访问一些 mysql 东西。这有一个额外的挑战,因为 mysql 默认阻止从 ssh 隧道访问。我不做 mysql,所以我不知道接下来我要说什么。我只是引用了末尾链接的相关部分,你应该阅读一下。

打开 /etc/mysql/my.cnf 并查找 [mysqld] 部分。如果您看到一行“skip-networking”,请将其注释掉。添加“bind-address = 127.0.0.1”(当然,不带引号)。

http://www.debuntu.org/port-forwarding-and-channel-3-open-failed-connect-failed-Connection-refused

第 3 部分

如果您只需要访问一个位置, Javier 的解决方案ssh -L 8080:localhost:80 user@remoteserver非常棒。它允许您访问本地主机,而不会影响互联网的其余部分。我的 ssh -D 解决方案更进一步,实际上会将您的所有 http 请求定向到远程服务器。显然,您可能实际上并不想要这个。但我发现,当我想通过 http 访问网络上的所有机器时,或者当我不想让我的 http 请求通过我所连接的网络时(例如,星巴克的网上银行。我的所有流量都通过 ssh 隧道传输到我的家庭互联网),它很有用。

答案3

您可以通过 SSH 使用 X 转发,以便在服务器上运行的任何 X 应用程序都会显示在您的个人计算机上。

  1. 使用 SSH 连接到服务器时,添加 -X 标志。例如,ssh -X myserver
  2. 在服务器上安装 GUI 浏览器并直接运行它。输出将通过 X 转发和安全 SSH 连接出现在您的个人计算机上。

答案4

这是一个全面的解决方案:

  1. SOCKS5使用以下协议建立隧道(动态端口转发)ssh
    ssh -ND 9994 -C user@YourSshServer
    或者如果您必须使用特定端口进行 SSH:
    ssh -ND 9994 -C -p xxxx user@YourSshServer

  2. 通过搜索网络代理配置 FireFox 首选项,然后点击Settings...以下步骤:
    在此处输入图片描述

现在 Firefox 可以正确浏览所有现有的 HTTP 端口。


您还可以使用另一种方法@Javier 回答您可以通过以下命令从远程服务器访问特定端口,而无需在浏览器上进行任何配置:

ssh -NL <dummy-port>:localhost:<intended-port> -C user@YourSshServer

例如

ssh -NL 8080:localhost:80 -C user@YourSshServer

现在80远程服务器的端口已链接到该8080端口,您可以通过 在任何浏览器上轻松看到它localhost:8080

相关内容