SSH端口转发实现对非暴露端口的访问

背景

VSCode可以实现将服务器8888端口的web应用,转发到本地浏览器127.0.0.1:8888访问,而这个端口可能是不对公网暴露的。那这是怎么实现的呢?

用到的就是SSH隧道的端口转发,VSCode通过SSH实现了将本地127.0.0.1:8888的请求转发到服务器的8888端口。

基于这种思想,可以解决一直困扰我们的远程桌面连接,由于服务器的xrdp建立在3389端口,而该端口可能由于安全组的问题,一直没有在公网暴露,但我们是可以建立SSH连接的,所以就想到通过SSH转发,将3389端口转发到本地某端口,在本地用Microsoft Remote Desktop连接127.0.0.1:xxxx来实现连接建立。

应用

先启动ssh

ssh -L 8888:127.0.0.1:5901 -L 8889:127.0.0.1:3389 yinhuanghao@166.111.81.7

这个命令中,实现了两个端口映射:

将服务器的5901映射到了本地的8888(vncserver的端口)

将服务器的3389映射到了本地的8889(xrdp端口)

端口号取决于实际运行情况,在服务器上,我用vncserver作为xrdp的后端(也可以有别的用法,vncviewer可以直接连接vnc的桌面,xrdp也可以配置别的桌面作为后端)

这个ssh连接如果关闭了,端口映射就失效了

用本地软件连接

只要配置正确,连接还是容易的

PC name: 127.0.0.1:8889

User account: yourname的ssh密码

如果用vncviewer填vnc服务的密码,不过我设的和ssh密码一致

其他命令

vncserver --list
vncserver -kill :1
vncserver :1
sudo vim /etc/xrdp/xrdp.ini
sudo service xrdp restart
vncserver :1 -geometry 2880x1800

特性

  • vncserver将图像信息传输给本机电脑,然后在本地进行图像渲染和显示,本地渲染的过程需要消耗很多资源,可能导致主机电脑的CPU和显卡工作负载增加;
  • (推荐)xrdp则是在服务器端进行图像渲染,只将渲染后的图像传输给客户端进行显示,对于本地计算资源的消耗较小
posted @ 2023-04-07 20:09  Kinghao0319  阅读(85)  评论(0编辑  收藏  举报