当我 ssh 进入我的服务器并在那里执行操作时。例如,我如何在远程计算机上打开浏览器,并将其显示在本地计算机上?
我在本地机器上运行 Ubuntu 桌面。在服务器端,我使用 Ubuntu 16.04 服务器。它是一个开发服务器,所以我有一个使用以下代码的 Python 脚本:
webbrowser.open("https://" + url)
使用我需要的 URL 打开默认浏览器。
换句话说,当我登录服务器时,如何在本地机器上打开链接。
更一般地说,我怎样才能像使用本地机器一样使用我的 Ubuntu 远程服务器机器?
自从:
- 服务器端机器不需要 GUI。
- 我不想安装服务器 GUI 并使用远程桌面。
我如何访问我自己的开发服务器并在本地机器上打开一个简单的程序?
答案1
最简单的方法是使用 SSH 的 socks 代理。手册页如下:
-D [绑定地址:]端口
指定本地“动态”应用程序级端口转发。这通过分配套接字来监听本地端口(可选绑定到指定的 bind_address)来实现。每当与此端口建立连接时,连接都会通过安全通道转发,然后使用应用程序协议来确定从远程计算机连接到何处。
浏览器也可以使用 socks 代理。如何配置它取决于您使用的浏览器,但我通常使用一个浏览器通过 socks 工作,另一个浏览器用于非代理工作。
首先,使用以下命令启动 ssh:
ssh -D1080 [email protected]
这将运行 ssh,创建到远程主机的 socks 代理,监听端口 1080。在您的浏览器中,在 localhost、端口 1080 上输入 socks 代理。在 Firefox 中,它位于“首选项 - 高级 - 网络”下:
这会将流量从浏览器隧道传输到远程计算机,并且流量看起来似乎来自远程计算机。
答案2
首先,在服务器的 sshd_config 中启用 X11 转发,如下所示
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
然后在你的服务器上 ssh:
$ ssh user@server -C -X
然后启动 Firefox
$ firefox