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 应用程序都会显示在您的个人计算机上。
- 使用 SSH 连接到服务器时,添加 -X 标志。例如,
ssh -X myserver
。 - 在服务器上安装 GUI 浏览器并直接运行它。输出将通过 X 转发和安全 SSH 连接出现在您的个人计算机上。
答案4
这是一个全面的解决方案:
SOCKS5
使用以下协议建立隧道(动态端口转发)ssh
:
ssh -ND 9994 -C user@YourSshServer
或者如果您必须使用特定端口进行 SSH:
ssh -ND 9994 -C -p xxxx user@YourSshServer
现在 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
。