ssh的X转发妙用

时间:2022-01-26 17:13:43
ssh登录的时候如果指定了-X参数,例如:
ssh -X xxx.xxx.xxx.xxx
那么登录之后DISPLAY变量自动设置为本地的X Window.
在这个登录中打开的所有X程序,其图形会自动转发到本地.
这样可以省却指定display参数,而且不用担心xhost的权限问题.
在这里只是简单介绍一下ssh的X转发.

今天我晚上,赵凯来找我说,他的IP被学校加入黑名单了.
所以他虽然可以用锐捷认证成功,但却访问不了外网.
IP的封禁时间是24小时,网络中心返回的信息是他的机器攻击了学校的DNS.
也就是说他的系统中对学校的DNS发起了恶意请求.
这个事情相当的奇怪,难道是他的系统感染病毒了?
Linux感染病毒很罕见的,一向是传说中的事情.
恶意猜测一下,
是不是他上网看小电影看多了导致久走夜路终遇鬼,嘿嘿....

我和他讨论了一会儿,最后把问题聚焦在了一个地方.
他的apt使用的源相当多,souselists里面有很多很多的网址.
当初是从我这里拷贝过去的,但是后来我更改了souselists,全部使用163镜像了.
这个网站速度相对快一些.
所以我们一致认为是因为源里有不安全站点,然后导致系统安装的软件是非安全的.
有可能是人家的站点被攻击了,部分软件被恶意修改.
他最后按照我的建议也全部替换成了163镜像站点.
然后他说,他要做一个大工程,就是把所有的软件卸载一遍,重新安装.
这样就可以覆盖掉恶意程序了.
但是后来想到那个恶意程序有可能已经复制了自身到包管理器难以企及的地方,干脆作罢.
总不成重装系统,那样很耗费精力,又得花费大把时间安装软件,调整配置.

我想到了ssh的X转发.
于是就试验了一下,看能不能在IP被封禁的情况下浏览网页.
从他机器上登录我这里,然后启动一个firefox转发过去.
他在显示的firefox窗口中输入www.google.cn
按了回车之后,果然可以正常浏览网页.
实际的工作方式是这样的.
他的IP虽然不能访问外网,但是和校园网内部网路之间是可以连通的.
所以他的机器可以和我的机器互访,而我的机器是可以访问外网的.
这样,我机器上运行的firefox程序向外部网站发起http请求,
外部网站返回数据后,firefox将网页显示在其图形窗口中,
而此时firefox的图形窗口是通过ssh隧道转发到他的X上的,
所以在他机器上就可以看到返回的网页了.
这样虽然他的IP被封禁不能访问外网,但一样可以浏览网页.
我的机器起一个基站服务的功能.

那么如果很多台机器连接到同一个集线器上.
只要其中有一台机器可以连接外网,
所有的机器都可以通过ssh登录到这台机器上转发一个浏览器窗口到本地X Window,
这样就可以实现共享上网了.
当然前提是那台可以连接外网的机器配置要好一些.
不然启动很多个firefox进程就直接卡死了.