快捷搜索:   nginx

Linux下利用ssh的端口转发功能实现服务器访问客户机

一、前言
       通常情况下在客户机上用ssh上的sshd服务是可以的,因为通常放在公网上。但是现在有个需求,能否从服务器上客户机上的服务呢? 因为通常客户机一般在内网,没有公网的IP,所以服务器不能直接访问到处于内网的客户机。这里呢,我们ssh的端口转发实现服务器访问客户机。

二、服务器以及客户机的准备
       1、 这里要求服务器上必须安装sshd服务,客户机必须安装ssh客户端
      2、服务器处于公网上,客户机可以通过任何形式连接到互联网即可
      3、客户机有提供访问的服务,这里为了简便起见,我们只在客户机安装了sshd服务,当然也可以是vnc服务等等...(客户机上的服务不限定,只要是能从服务器上访问到客户机的服务即可,相应的服务器上有访问该客户机上服务的客户端程序)
      4、服务器和客户机上分别开启sshd服务,这里侦听的端口为默认的22

三、ssh的端口转发
      1、在客户机上执行如下命令(必须有root权限)
       # ssh -p 22 -f -N -R 12345:localhost:22 root@服务器公网IP
       执行后要求输入服务器root用户的密码
       如果密码正确,则服务器上会开启一个 127.0.0.1:12345的侦听端口,具体该命令的含义是:
       -p   22    #指定访问服务器的sshd服务端口为22
       -f            #要求在执行命令前退至后台
       -N          #不执行远程命令. 用于转发端口. (仅限协议第二版),这个命令通常与端口转发的选项配合使用
       -R  12345:localhost:22  #将服务器的12345端口转发到客户机的127.0.0.1的22端口
                                             #这样在服务器上用ssh来访问127.0.0.1:12345实际上就是访问了客户机的
                                             #sshd的22端口的服务了

        2、在服务器上访问客户机
        # ssh -p 12345 localhost      #这里localhost指的就是127.0.0.1
        执行后要求输入客户机root用户的密码
        如果密码正确,就会成功登录到客户机上了。

四、用ssh转发客户机的其它服务端口(其它服务端口的转发参照此例)
       1、这里我们转发VNC服务的端口,VNC是一个远程桌面控制服务,这里假设客户机安装了VNC的服务端,该服务开启的侦听端口为:5900

        2、在客户机上执行如下命令(必须有root权限)
       # ssh -p 22 -f -N -R 12346:localhost:5900 root@服务器公网IP
       执行后要求输入服务器root用户的密码
       如果密码正确,则服务器上会开启一个 127.0.0.1:12346的侦听端口

       3、在服务器上访问客户机VNC服务
        # vncviewer       #这里服务器安装了xvncviewer(vnc客户端)
                                                      
        执行后要求输入VNC服务端的IP地址及端口,这里就输入:127.0.0.1:12346
        接着要求输入登录客户机VNC服务的密码
        如果密码正确,就会显示客户机上的远程桌面了。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论